3

我想将控件作为 Gridview 的 TemplateFeilds 中的列,它不应该被隐藏。每列末尾都有一个按钮。我的问题是我应该使用什么控件以及如何获取在 Gridview 中单击按钮的列的特定行的值。

4

4 回答 4

3

你想得到什么价值?

您可以处理按钮的单击事件并将sendertoButton和 it's NamingContainerto 转换为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 的 TemplateField)

<asp:Button ID="Button1" runat="server" Text="Click Me" OnClick="Button1_Clicked"/>
<asp:HiddenField ID="HiddenID" runat="server" Value='<%# Eval("PrimaryKeyField") %>'/>
于 2013-01-04T08:51:53.757 回答
3

您应该在 中使用HiddenFieldas 列,GridView因为控件不可见,从而满足您的要求。后面的代码会在gridview的row命令里面

   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" 是因为 Button 的属性命令名称设置为 "sendvalue"

设计中的 HiddenField 将是

  <asp:HiddenField ID="HiddenField1" runat="server"/>
于 2013-01-04T08:55:04.143 回答
2

在模板中使用隐藏字段。

于 2013-01-04T08:49:55.327 回答
2

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

于 2013-01-04T08:51:39.147 回答