1

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

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

请问我做错了什么

4

2 回答 2

1
  1. 您不需要将字符串转换为字符串(TextBox.Text返回已经是字符串)。

您是如何以及在何处添加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);
    }
}
于 2012-11-26T15:49:17.057 回答
0

好的,首先检查它是否是页脚行,然后在其中找到文本框

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;
于 2012-11-26T15:56:15.063 回答