将asp:ButtonField转换为GridView控件中的asp:TemplateField

时间:2008-12-03 20:22:25

标签: asp.net gridview linkbutton templatefield

我目前有一个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属性的名称是什么?或者更好的方法呢?

2 个答案:

答案 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 %>"