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);
        }
    }

这段代码一直返回"(空)

知道为什么会这样吗?

谢谢

Gridview findcontrol返回空的";

确保您没有在页面的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"),看看它返回什么