gridview findcontrol返回空“”

时间:2011-08-17 07:34:32

标签: c# asp.net visual-studio-2010 gridview findcontrol

我正在尝试使用此代码从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?

由于

2 个答案:

答案 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”)并查看它返回的内容。