代码之家  ›  专栏  ›  技术社区  ›  sgibbons

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

  •  1
  • sgibbons  · 技术社区  · 17 年前

    我目前有一个网格视图,其中一列是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 回复  |  直到 17 年前
        1
  •  3
  •   BenAlabaster    17 年前

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

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

    您不需要绑定行id。命令参数用于事件参数,而不是行参数。…如果这有道理的话。

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

    也就是说,如果你想翻页,你可以在CommandArgument中有“下一页”、“上一页”,“第一页”、”最后一页”或页码。

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

        2
  •  1
  •   animuson    14 年前
    CommandArgument="<%# CType(Container, GridViewRow).RowIndex %>"
    
    推荐文章