Question

Je n'ai aucun problème à utiliser le langage Javascript pour lire les lignes d'un composant telerik radgrid im, mais il me semble néanmoins que je ne parviens pas à accéder au côté serveur de données en ligne lorsqu'un postback se produit. J'ai passé des siècles à chercher une solution, mais pas de chance. Tous les indicateurs seraient grandement appréciés.

Tony

Était-ce utile?

La solution

Vous voudrez peut-être consulter les DataKeyValues propriété 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 de modification 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. En gros, vous spécifiez une liste de noms de champs délimités par des virgules.

Autres conseils

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

Côté serveur Côté client

J'espère que vous les trouverez utiles.

Dick

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! : [

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");
}
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

Ceci 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()));
        }
    }

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 personnalisée dynamique et souhaitez accéder aux 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;
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top