Gridview findcontrol返回空的";
本文关键字:quot findcontrol 返回 Gridview | 更新日期: 2023-09-27 18:05:54
我试图从gridview内的文本框中读取使用此代码
protected void Button1_Click(object sender, EventArgs e)
{
foreach (GridViewRow row in GridView1.Rows)
{
string textBoxText = ((TextBox)row.FindControl("numTC")).Text;
Response.Write(textBoxText);
}
}
这段代码一直返回"(空)
知道为什么会这样吗?
谢谢
确保您没有在页面的PostBack上重新绑定GridView。这可能是问题所在。
编辑
确保绑定GridView的代码在下面的代码中:
c#if ( !Page.IsPostBack ){
// Code to bind the control
}
VB
If Not Page.IsPostBack Then
' Code to bind the control
End If
否则会发生的情况是控件被"重建",值都丢失在TextBox的
UPDATE:
对于测试目的,尝试执行GridView1.DataBind();
试着这样调试:
在Button1_Click方法的末尾设置一个断点。
在调试模式下运行站点(F5)。
当执行在Button1_Click结束时停止,打开位于屏幕底部的即时窗口。
类型:GridView1。行,看看它是否包含应有的行数
应该是这样的:
System.Web.UI.WebControls.GridViewRowCollection}Count: 53 <——行数
如果返回超过0行,则键入:
GridView1.Rows[0]。控件,并查看它是否返回一行上的正确控件数。
我可以直接使用GridView1.Rows[2]访问行上的控件。控件[n],其中n为控件在行中的顺序。
也尝试(TextBox)GridView1.Rows[0]. findcontrol ("numTC"),看看它返回什么