Gridview用C#添加行

时间:2012-11-26 15:37:37

标签: c# asp.net

我想在gridview中添加一行。我成功添加了文本框,但我无法提取值 它不断告诉我对象引用未设置为对象的实例。在这一行停止

string acc = Convert.ToString(((TextBox)GridView1.FooterRow.FindControl("accountID")).Text);

请问我做错了什么

2 个答案:

答案 0 :(得分:1)

  1. 您不需要将字符串转换为字符串(TextBox.Text返回已经是字符串)。
  2. 您如何以及在何处将TextBox添加到页脚行?

      

    我将TextBox添加到GridView1_RowDataBound

    中的页脚行

    RowDataBound不是动态控件的正确方法,因为它仅在数据绑定时调用,而不是在每次回发时调用。但是每次回发都需要重新创建动态控件。

    因此,请使用RowCreated动态创建控件并使用RowDataBound对其进行数据绑定。

    protected void GridView1_RowCreated(Object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.Footer)
        {
            TextBox tb = new TextBox();
            tb.ID = "accountID";
            e.Row.Cells[indexOfColumn].Controls.Add(tb);
        }
    }
    

答案 1 :(得分:0)

好的,首先检查它是否是一个页脚行,然后在其中找到textBox

protected void grdAccounts_RowDataBound(object sender, GridViewRowEventArgs e)
{
  if (e.Row.RowType == DataControlRowType.Footer)
  {
   //get text box value here
  }
}

按钮点击

试试这个

GridViewRow row = GridView1.FooterRow; 
firstName = ((TextBox)row.FindControl("TextBox1")).Text;