在Row命令中获取Gridview的内容

这是UI中的代码

     -- 

我想点击按钮编辑时,我想在同一页面的文本框中获取所有字段的详细信息。 我试过用:

  protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e) { if (e.CommandName == "Edit") { GridViewRow Row = (GridViewRow)(((Button)e.CommandSource).NamingContainer); string text = Row.Cells[2].Text; } 

但我在字符串文本中得到“”

这是我的网格视图的屏幕截图 在此处输入图像描述

  1. 您可以使用存储在command argument的行索引来查找单击“ Edit按钮的行。
  2. 现在,您可以在该行中找到单元格索引位置为2的TextBox
  3. 然后获取TextBoxText

     protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e) { if(e.CommandName == "Edit") { int index = Convert.ToInt32(e.CommandArgument); GridViewRow clickedRow = CustomersGridView.Rows[index]; TextBox myTextBox = (TextBox)clickedRow.Cells[2].FindControl("TextBoxName"); string text = myTextBox.Text; } } 

在ASPX页面中,您需要处理行命令事件,如下所示:

    

您可以使用以下代码访问GridViewRow注意: Button必须是具有CommandName/CommandArgument的控件 ):

 var row = (GridViewRow)(((Button)e.CommandSource).NamingContainer); 

然后只需在found row上使用FindControl方法来查找目标控件, 例如。

 var txtSomething = (TextBox)row.FindControl("txtSomething"); 

您还可以使用row.RowIndex访问row.RowIndex

我建议避免使用row.Cells[INDEX].FindControl() ,只是row.FindControl工作得很好,针对特定的cell不好,如果你改变标记并添加/删除一些列,(也许)你需要更新INDEX也是如此,所以不要这样做 🙂

您需要在单元格中找到TextBox控件并从中获取值。

 string text = (TextBox)Row.FindControl["MyTextBoxId"].Text;