点击按钮访问GridView的数据

本文关键字:数据 GridView 访问 按钮 | 更新日期: 2023-09-27 18:18:51

我有一个gridview与一些列和模板字段列,其中包含一个按钮,我想调用按钮单击过程,但是我想传递一个列的值到过程,但我得到一个错误,这里是按钮的动作监听器:(gridview中的列名是team_ID)错误:像Eval()、XPath()和Bind()这样的数据绑定方法只能在数据绑定控件的上下文中使用。错误行:int team_ID = Convert.ToInt32(Eval("team_ID"));

protected void Button1_Click(object sender, EventArgs e)
    {
        string connStr = ConfigurationManager.ConnectionStrings["MyDbConn"].ToString();
        SqlConnection conn = new SqlConnection(connStr);
        SqlCommand cmd = new SqlCommand("join_team", conn);
        cmd.CommandType = CommandType.StoredProcedure;
        int team_ID = Convert.ToInt32(Eval("team_ID"));
        string email = Session["email"].ToString();
        cmd.Parameters.Add(new SqlParameter("@team_ID", team_ID));
        cmd.Parameters.Add(new SqlParameter("@myemail", email));
        conn.Open();
        cmd.ExecuteNonQuery();
        conn.Close();
    }

点击按钮访问GridView的数据

首先,要处理在TemplateField中单击的按钮,您需要订阅RowCommand方法:

<asp:GridView runat="server" ID="gv" OnRowCommand="yourMethod">

你可以有多个按钮在你的网格和猜测,导致点击与CommandName属性。下面的代码显示了这一点,以及如何获取被单击的按钮所在的行,并从该行检索其他控件,以便获取它们的值。

<asp:TemplateField>
      <ItemTemplate>
            <asp:Button CommandName="yourButtonName" runat="server" />

背后的代码
protected void yourMethod(object sender, GridViewCommandEventArgs e) {
    if (e.CommandName == "yourButtonName") {
        GridViewRow row = (GridViewRow)(((Button)e.CommandSource).NamingContainer);
        TextBox someTextBox = row.FindControl("tb") as TextBox;
        string textValue = someTextBox.Text;
    }
}