web-dev-qa-db-fra.com

Accès aux données de ligne dans Telerik RadGrid (côté serveur)

Je n'ai aucun problème à utiliser le langage Javascript pour lire les lignes d'un composant telerik radgrid im, mais je peux sembler trouver de toute façon un accès au côté serveur de données en ligne lorsqu'une publication a lieu. J'ai passé des siècles à chercher une solution, mais pas de chance. Tous les pointeurs seraient grandement appréciés.

Tony

9
TonyNeallon

Vous voudrez peut-être consulter la propriété DataKeyValues ​​ de l'objet OwnerTableView, qui vous permettra d'accéder à une collection de valeurs représentant les champs d'une ligne donnée. Je l'utilise pendant le gestionnaire d'événements EditCommand, puisqu'un utilisateur de mon site est dirigé vers une page d'édition s'il clique sur le lien pour modifier une ligne dans la grille et que je dois transmettre certaines informations sur la ligne donnée dans la requête. chaîne.

Si cela s'avère être ce dont vous avez besoin, vous devrez également définir les champs qui doivent être disponibles via cette propriété. Pour ce faire, consultez la propriété MasterTableView.DataKeyNames dans la feuille de propriétés de la grille. Vous spécifiez essentiellement une liste de noms de champs délimités par des virgules.

16
Chris Tybur

J'utilise la grille Telerik depuis un certain temps et j'ai trouvé dans leur documentation ces articles expliquant comment récupérer des données à partir du serveur de rangées sélectionné ou du côté client:

Côté serveurCôté client

J'espère que vous les trouverez utiles.

Queue

5
Dick Lampard

Le côté serveur est la partie facile:

GridItemCollection gridRows = TestGrid.Items;
foreach (GridDataItem data in gridRows)
{
    ItemClass obj = (ItemClass)data.DataItem;
}

C'est la partie client que je ne connais pas! : [

3
Jason
private Int32 GetID()
{
    foreach (Telerik.Web.UI.GridDataItem dataItem in radGrid.MasterTableView.Items)
    {
        if (dataItem.Selected == true)
        {
            Int32 ID = (Int32)dataItem.GetDataKeyValue("ID");
            return ID;
        }
    }
    throw new ArgumentNullException("Id Not found");
}
1
user123976

Si vous avez correctement créé vos contrôles dans le balisage ou dans la page init pour les contrôles dynamiques, RadGrid restaure correctement l'état.

Vous pouvez accéder aux valeurs initiales chargées à partir de la source de données, comme dans l'exemple ci-dessous, à condition que vous ayez indiqué à la vue de table en question de conserver les colonnes dans les clés de données.

protected T GetInitialGridData<T>(GridDataItem item, string uniqueColumnName) {
   item.ThrowIfNull("item");
   uniqueColumnName.ThrowIfNullOrEmpty("uniqueColumnName");

   return (T)item.OwnerTableView.DataKeyValues(gridItem.ItemIndex)(columnName);
}

Si vous utilisez une colonne de modèle dynamique personnalisée et que vous souhaitez obtenir les valeurs pouvant maintenant se trouver dans leur état, vous pouvez utiliser:

protected string GetCustomTextBoxValue(GridDataItem item, string controlID) {
   item.ThrowIfNull("item");
   controlID.ThrowIfNullOrTrimmedEmpty("controlID");

   return ((TextBox)item.FindControl(controlID)).Text;
}
0
Rob
private Int32 GetID()
{
    foreach (Telerik.Web.UI.GridDataItem dataItem in radGrid.MasterTableView.Items)
    {
        if (dataItem.Selected == true)
        {
           // Int32 ID = (Int32)dataItem.GetDataKeyValue("ID");
Int32 ID =Convert.ToInt32(dataItem.GetDataKeyValue("ID"));
            return ID;
        }
    }

}
//this will work
0
Binay Rana

C'est celui qui fonctionne pour moi et utilise la collection RadGrid.SelectedItems.

protected void LinkButton1_Click(object sender, EventArgs e)
    {
        List<Guid> OrderIdList = new List<Guid>();

        foreach (GridDataItem OrderItem in this.RadGrid1.SelectedItems)
        {
            OrderIdList.Add(new Guid(OrderItem.GetDataKeyValue("OrderId").ToString()));
        }
    }
0
Solburn