我想在我的网格视图中添加一行。我成功添加了文本框,但我无法提取值它一直告诉我对象引用未设置为对象的实例。在这一行它停止
string acc = Convert.ToString(((TextBox)GridView1.FooterRow.FindControl("accountID")).Text);
请问我做错了什么
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);
}
}
好的,首先检查它是否是页脚行,然后在其中找到文本框
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;