2009-07-06 8 views
0

Il n'y a pas de asp: HiddenField qui peut être utilisé dans un GridView, donc je me demandais ce qui fonctionnerait de la même façon. Mon raisonnement pour vouloir ceci est que j'ai un ButtonField qui déclenche une commande OnRowCommand. À partir de là, je peux déterminer quelle ligne a été sélectionnée, mais je ne peux pas récupérer la valeur de texte à partir de ButtonField pour voir les données qui y étaient liées (via DataTextField). Ma solution à ceci était d'avoir un BoundField et juste récupérer la valeur de texte à partir de lui, puisque je savais déjà quelle ligne a été choisie. Cela a fonctionné, mais j'ai besoin d'être caché.Equivalence d'un ASP: HiddenField pour un GridView

Quelqu'un a suggéré d'utiliser un HiddenField imbriqué dans un TemplateField, mais j'ai eu des problèmes pour récupérer la valeur de texte de ce HiddenField. Est-il possible d'accéder au contrôle dans le TemplateField pour obtenir la valeur de texte de HiddenField?

Si quelqu'un a des suggestions de solutions de rechange, ce serait génial aussi.

Merci,
Matt

Répondre

1

Vous pouvez utiliser la propriété DataKeyNames sur le Gridview.

gridView.DataKeyNames = { "values", "you", "want "}; 

et vous pouvez y accéder comme ceci:

gridView.DataKeys[rowId].Values["value"]; 
0

est-il possible d'ajouter une autre colonne d'identité, en tant que représentant unique pour un enregistrement (ligne)? Cette colonne d'identifiant particulier peut être définie avec style: display = none pour la masquer, mais l'ID est toujours dans le formulaire HTML.

puis vous pouvez récupérer la valeur de cette colonne d'ID particulière à traiter davantage.

espérons que cette aide,

hadi

2

Vous pouvez utiliser un champ de modèle avec le CommandArgument égal au l'ID de l'enregistrement/ligne.

<ItemTemplate> 
    <asp:Button ID="Button1" runat="server" CausesValidation="false" 
     CommandName="SomeCommand" Text="Button" CommandArgument='<%# Eval("SomeID") %'></asp:LinkButton> 
</ItemTemplate> 

Ensuite, en cas de manipulation de commande de ligne, vous pouvez obtenir cette valeur par e.CommandArgument

Questions connexes