2008-12-03 5 views
1

J'ai actuellement un gridview qui a un asp: ButtonField comme l'une des colonnes. Le gestionnaire d'événements pour la commande extrait l'identifiant de ligne de gridview de l'argument de commande et l'utilise pour effectuer une certaine logique. Je dois maintenant passer à l'aide d'un champ de modèle pour cette colonne, et que vous voulez faire quelque chose comme ceci:Conversion d'un asp: ButtonField en un asp: TemplateField dans un contrôle GridView

<asp:TemplateField HeaderText="Action"> 
    <ItemStyle HorizontalAlign="Center" /> 
     <ItemTemplate> 
      <asp:LinkButton CommandName="myaction" CommandArgument="<%#Eval("id")%>" Text="do action" runat="server"/> 
     </ItemTemplate> 
</asp:TemplateField> 

Mon problème est avec l'attribut CommandArgument - Je ne sais pas comment ce soit la ligne id de GridView. Eval ("id") ne fonctionne pas - est-ce que quelqu'un sait quel est le nom de la propriété id de ligne? Ou une meilleure façon de le faire?

Répondre

3

Consultez ce document sur le site Web de Microsoft.

http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.gridview.rowcommand.aspx

Vous n'avez pas besoin de lier l'identifiant de ligne. L'argument de la commande est utilisé pour les arguments d'événement par opposition aux arguments de ligne ... si cela a du sens.

Je suppose que ce que j'essaie de dire, c'est que l'identifiant de ligne est implicite. Lorsque vous accédez à l'événement CommandArgs, il doit s'agir de quelque chose de spécifique à l'événement que vous essayez de déclencher.

Par exemple, si vous vouliez mettre en page, vous auriez "next", "prev", "first", "last" ou un numéro de page dans CommandArgument.

Disons que vous avez un bouton "Supprimer" ou ImageButton. C'est cliqué par l'utilisateur; l'événement delete est reçu lors de la publication et est propulsé de la ligne vers la grille avec l'objet row entier passé en argument. La grille supprime ensuite la ligne comme s'il s'agissait d'un seul contrôle dans une collection de contrôles - parce que c'est ce que c'est, la table est une collection de lignes de table.

1
CommandArgument="<%# CType(Container, GridViewRow).RowIndex %>" 
Questions connexes