使用

时间:2017-08-14 19:06:06

标签: asp.net vb.net

情况:

我有一个aspx内容页面,它有一个asp表。在表中有20行,只有一列。每个单元格中都有一个asp文本框。

我有一些代码,vb.net,当用户单击按钮时,会在文本框中添加文本。一切正常。

现在我需要做什么,似乎无法找到任何符合我情况的东西,就是当点击第二个按钮时我需要"循环"通过文本框。

我有一个隐藏的标签,其中包含实际使用的文本框数,因此我可以设置for / next循环。我似乎无法弄清楚的是如何准确地将文本框的内容分配给vb变量。

我目前有这段代码:

for x As integer = 1 to fCount
    tName = "TextBox" & x
    Dim cFileName as String = CType(Controls(tName), TextBox).ToString()
    blah blah blah other code
Next

它在试图分配带有变量名称tName的文本框文本的行上出错。这只是我尝试过的最新代码。我尝试了很多其他的但是我似乎无法做到这一点。

我的文本框被命名为TextBox1,TextBox2等,一直到TextBox20。隐藏文件计数器允许我只尝试检索已使用的文件。

非常感谢任何帮助!!

1 个答案:

答案 0 :(得分:0)

这是我在电脑上试过的代码。它的结构有点不同,希望能够纠正您可能遇到的其他错误。更重要的是,代码有效:

  For x As Integer = 1 To 20
     Dim tName As String = "TextBox" & x

     If Not String.IsNullOrEmpty(CType(Controls(tName), TextBox).Text) Then
        Dim cFileName As String = CType(Controls(tName), TextBox).Text
     End If
  Next

我根据以下假设摆脱了fCount:如果只有TextBox5TextBox10包含数据,那么fCount将为2.如果这是真的,那么你的循环不正确,因为你试图抓住TextBox1TextBox2

我将.ToString更改为.Text,以便为您提供控件的内容。

回到错误消息,Controls(tName)必须评估页面上的控件,否则您将收到错误。