我正在尝试使用此代码从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);
}
}
此代码一直返回“”(空)
任何想法为什么这是hapenning?
由于
答案 0 :(得分:4)
确保您没有在页面的PostBack上重新绑定GridView。这可能是个问题。
<强> EDITS 强>
确保绑定GridView的代码在以下代码中:
C#
if ( !Page.IsPostBack ){
// Code to bind the control
}
VB
If Not Page.IsPostBack Then
' Code to bind the control
End If
否则会发生的情况是控件被“重建”并且值在TextBox中都丢失了
答案 1 :(得分:1)
<强>更新强>
出于测试目的,请尝试执行GridView1.DataBind();在你的方法的开头。
尝试这样的调试:
在Button1_Click方法的末尾设置断点。
以调试模式运行网站(F5)。
当执行停止在Button1_Click结束时,打开位于屏幕底部的立即窗口。
键入:
GridView1.Rows并查看它是否包含应该包含的行数。
应该是这样的:
System.Web.UI.WebControls.GridViewRowCollection} 计数:53&lt; - 行数
如果确实返回超过0行,则输入:
GridView1.Rows [0]。控制并查看它是否在一行中返回正确数量的控件。
我可以使用GridView1.Rows直接访问行上的控件[2] .Controls [n]其中n是行中控件的顺序。
还尝试(TextBox)GridView1.Rows [0] .FindControl(“numTC”)并查看它返回的内容。