我目前有一个gridview,它有一个asp:ButtonField作为其中一列。该命令的事件处理程序从命令参数中提取gridview的行id,并使用它来执行某些逻辑。我现在需要切换到使用此列的模板字段,并希望执行以下操作:
<asp:TemplateField HeaderText="Action">
<ItemStyle HorizontalAlign="Center" />
<ItemTemplate>
<asp:LinkButton CommandName="myaction" CommandArgument="<%#Eval("id")%>" Text="do action" runat="server"/>
</ItemTemplate>
</asp:TemplateField>
我的问题是CommandArgument属性 - 我不知道如何将它作为GridView的行id。 Eval(“id”)不起作用 - 有谁知道行id属性的名称是什么?或者更好的方法呢?
答案 0 :(得分:3)
在Microsoft网站上查看此文档。
http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.gridview.rowcommand.aspx
您不需要绑定行ID。命令参数用于事件参数而不是行参数......如果这有意义的话。
我想我想说的是行id是隐含的。当您访问事件CommandArgs时,它应该是针对您尝试引发的事件的特定内容。
即。如果你想翻页,你会在CommandArgument中有“next”,“prev”,“first”,“last”或页码。
假设你有一个“删除”按钮或ImageButton。它被用户点击;在回发上接收删除事件,并从行向上冒泡到网格,整个行对象作为参数传递。然后网格删除该行,就像它是控件集合中的单个控件一样 - 因为它就是这样,表是表行的集合。
答案 1 :(得分:1)
CommandArgument="<%# CType(Container, GridViewRow).RowIndex %>"