1

我目前有一个网格视图,其中有一个 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 属性的名称是什么?或者更好的方法来做到这一点?

4

2 回答 2

3

在 Microsoft 的网站上查看此文档。

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

您不需要绑定行 ID。命令参数用于事件参数,而不是行参数......如果这有意义的话。

我想我想说的是行 id 是隐式的。当您访问事件 CommandArgs 时,它应该针对您尝试引发的事件的特定内容。

即,如果您想分页,您将在 CommandArgument 中有“下一个”、“上一个”、“第一个”、“最后一个”或页码。

假设您有一个“删除”按钮或 ImageButton。它被用户点击;在回发时收到删除事件,并从行向上冒泡到网格,整个行对象作为参数传递。然后网格删除该行,就好像它是控件集合中的单个控件一样 - 因为它就是这样,表是表行的集合。

于 2008-12-03T20:37:47.277 回答
1
CommandArgument="<%# CType(Container, GridViewRow).RowIndex %>"
于 2011-07-07T12:46:37.720 回答