从 buttonField 按下获取 GridView 数据?

getting GridView data from buttonField press?

所以我有一个用于 C# Web 应用程序的 GridView,它有一个 Buttonfield,当单击该按钮时,我需要获取该行的其中一个字段的值并将其存储在一个变量中以供处理在某种程度上。

但是,GridView 和 ButtonField 似乎都不具备执行此操作的任何方法。

任何人都可以推荐一种从 GridView 获取数据的方法,或者如果这不可能,可以推荐一种提供此功能的不同类型的视图,同时仍然显示整个 table(例如,不是详情查看)

你可以检查这个link:https://msdn.microsoft.com/en-us/library/bb907626(v=vs.140).aspx

  • 定义按钮的 CommandName。
  • 在 GridView 中定义 RowCommand 事件并检查 CommandName。
  • 获取行的索引。
  • 获取包含 GridView.Rows[index](columnIndex)
  • 的列

如果您正在使用如下所示的 asp:TemplateField,那么您可以使用 RowCommand

访问行内容

标记

<asp:TemplateField>
    <ItemTemplate>
        <asp:Label ID="lblCode" runat="server" Text='<%# Eval("CustomerID") %>'>
        </asp:Label>
    </ItemTemplate>
</asp:TemplateField>
<asp:ButtonField CommandName="AddCode" Text="Add New"/>

代码

protected void gvwSearch_RowCommand(object sender, GridViewCommandEventArgs e)
{
    if(e.CommandName == "AddCode")
    {
        var clickedButton = e.CommandSource as Button;
        var clickedRow = clickedButton.NamingContainer as GridViewRow;
        var rows_lblCode = clickedRow.FindControl("lblCode") as Label;
        // now you can acccess all the label properties. For example,
        var temp = rows_lblCode.Text;

    }
}