【发布时间】:2013-10-09 07:59:15
【问题描述】:
我有一个名为 Default.aspx 的 asp.net 页面,它的母版页是 Site.master。在 Default.aspx 中,我添加了一个带有 3 个数据绑定字段和 1 个模板字段的网格视图,然后在此模板字段中拖动了一个文本框。
我正在尝试使用 FindControl 方法获取此网格视图中每一行的文本框值,但它没有返回任何内容。
这是我用来检索这些值的代码:
For Each gvr As GridViewRow In GridView1.Rows
Dim tb As TextBox = DirectCast(gvr.FindControl("TextBox1"), TextBox)
Dim txt As String = tb.Text
MsgBox(txt)
Next
注意:我正在使用 masterPages,我认为这是导致问题的原因。
[编辑]
在Page_load事件中,为了绑定gridview,我使用了代码:
GridView1.DataSource = f.xDa
GridView1.DataBind()
在 Button1 中,我添加了代码:
For Each gvr As GridViewRow In GridView1.Rows
Dim tb As TextBox = DirectCast(gvr.FindControl("TextBox1"), TextBox)
Dim txt As String = tb.Text
MsgBox(txt)
Next
但我总是得到一个空的文本框。
谢谢大家!
【问题讨论】:
-
您在哪里调用该代码?如果 GridView 尚未绑定数据,则可能不会显示任何内容。另外,该代码是否会引发错误,或者您只是在 MsgBox 中得到一个空字符串?
-
是的,Gridview 工作正常,代码如下: GridView1.DataSource = f.xDa GridView1.DataBind() 但是,当我在文本框中键入时,我无法获取其中的值... . 在这种情况下,我在 msgbox 中得到一个空字符串。
-
你的问题中的代码是在什么事件中执行的?
-
在 Page_Load 中:GridView1.DataSource = f.xDa GridView1.DataBind() 在一个名为 Button1 的按钮中,我将代码:
For Each gvr As GridViewRow In the GridView1.Rows Dim tb As TextBox = DirectCast(gvr.FindControl("TextBox1"), TextBox) Dim txt As String = tb.Text MsgBox(txt) Next -
请使用“编辑”按钮使用相关代码更新您的问题。这里的 cmets 太难理解了 =)
标签: asp.net vb.net gridview findcontrol