在Row命令中获取Gridview的内容

时间:2014-03-14 02:16:29

标签: c# asp.net

这是UI中的代码

<asp:TemplateField>
     <ItemTemplate>  
          <asp:Button ID="btn" runat="server" CommandName="Edit" Text="AFE" />
     </ItemTemplate>
</asp:TemplateField>
--</Columns>

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

  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;

    }

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

这是我的网格视图的屏幕截图 enter image description here

3 个答案:

答案 0 :(得分:4)

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

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

    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;
        }
    }
    

答案 1 :(得分:0)

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

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

然后只需在FindControl上使用found row方法查找目标控件,代表

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

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

我建议避免使用row.Cells[INDEX].FindControl(),只是row.FindControl工作正常,如果您更改标记并添加/删除某些内容,则定位特定cell并不好列,(也许)您还需要更新INDEX,所以不要这样做:)

答案 2 :(得分:-1)

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

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