获取GridView中一列的值

3

我希望在Gridview的TemplateFields中使用一个不被隐藏的控件作为列,并在每一列的结尾放置一个按钮。我的问题是,我应该使用什么控件,并如何获取在GridView中特定行上点击按钮的那一列的数值。

4个回答

3

你想获取什么值?

你可以处理按钮的点击事件,并将 sender 转换为 Button,将它的 NamingContainer 转换为 GridViewRow。然后你就有了在该行中查找其他控件所需的一切。

protected void Button1_Clicked(Object sender, EventArgs e)
{
    // get the button reference
    Button btn = (Button) sender;
    GridViewRow row = (GridViewRow) btn.NamingContainer;
    // assuming the primary key value is stored in a hiddenfield with ID="HiddenID"
    HiddenField hiddenID = (HiddenField) row.FindControl("HiddenID");
    int id = int.Parse(hiddenID.Value);
}

aspx (GridView's TemplateField)

<asp:Button ID="Button1" runat="server" Text="Click Me" OnClick="Button1_Clicked"/>
<asp:HiddenField ID="HiddenID" runat="server" Value='<%# Eval("PrimaryKeyField") %>'/>

3
您应该在GridView的列中使用HiddenField,因为该控件不可见,从而满足您的需求。代码将在gridview的行命令中进行处理。
   public  void gdView_RowCommand(object sender, GridViewCommandEventArgs e)
        {

            if (e.CommandName == "sendvalue")
            {

                for (int i = 0; i < gdView.Rows.Count; i++)
                {
                    int getrow = Convert.ToInt32(e.CommandArgument);

                    HiddenField HiddenField1 = (HiddenField)gdView.Rows[getrow].FindControl("HiddenField1");
}
}

其中的e.CommandName == "sendvalue"是因为按钮的command name属性设置为“sendvalue”。

设计中的HiddenField将被表示为:

  <asp:HiddenField ID="HiddenField1" runat="server"/>

2
在您的模板中使用隐藏字段。

2

您可以通过在行数据绑定期间将要单击的按钮的CommandArgument属性设置为所需值来更改方法。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接