我想在gridview中添加一行。我成功添加了文本框,但我无法提取值 它不断告诉我对象引用未设置为对象的实例。在这一行停止
string acc = Convert.ToString(((TextBox)GridView1.FooterRow.FindControl("accountID")).Text);
请问我做错了什么
答案 0 :(得分: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);
}
}
答案 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;