【问题标题】:looping through asp.net textboxes visual basic循环遍历 asp.net 文本框 Visual Basic
【发布时间】:2015-05-13 15:26:12
【问题描述】:

我有一个 asp.net,后面有一些 vb 代码。 我需要遍历许多文本框并根据其中一个框上的值,使该字段可见(或其他)

每个“行”字段有 6 个相关字段,我使用前缀和后缀来区分它们。

If txtOC7_D.Text <> "" Then
                    txtOC7_D.Enabled = True
                    txtOC7_C.Enabled = True
                    txtOC7_1.Enabled = True
                    txtOC7_2.Enabled = True
                    txtOC7_3.Enabled = True
                    txtOC7_B.Enabled = True
                ElseIf txtOC7_D.Text = "" Then
                    txtOC7_D.Enabled = False
                    txtOC7_C.Enabled = False
                    txtOC7_1.Enabled = False
                    txtOC7_2.Enabled = False
                    txtOC7_3.Enabled = False
                    txtOC7_B.Enabled = False
                End If
                If txtOC8_D.Text <> "" Then
                    txtOC8_D.Enabled = True
                    txtOC8_C.Enabled = True
                    txtOC8_1.Enabled = True
                    txtOC8_2.Enabled = True
                    txtOC8_3.Enabled = True
                    txtOC8_B.Enabled = True
                ElseIf txtOC8_D.Text = "" Then
                    txtOC8_D.Enabled = False
                    txtOC8_C.Enabled = False
                    txtOC8_1.Enabled = False
                    txtOC8_2.Enabled = False
                    txtOC8_3.Enabled = False
                    txtOC8_B.Enabled = False
                End If

我总共有 20 组(每组 6 个字段)。 所以我想做如下(标准VB),但我看不到如何在ASP.NET VB上做到这一点:

for l=1 to 20
 If Controls("txtOC" & l) & "_D"<>"" Then
   Controls("txtOC" & l) & "_D".visible=true
   Controls("txtOC" & l) & "_C".visible=true
   Controls("txtOC" & l) & "_1".visible=true
   Controls("txtOC" & l) & "_2".visible=true
   Controls("txtOC" & l) & "_3".visible=true
   Controls("txtOC" & l) & "_B".visible=true
 else
   Controls("txtOC" & l) & "_D".visible=false
   Controls("txtOC" & l) & "_C".visible=false
   Controls("txtOC" & l) & "_1".visible=false
   Controls("txtOC" & l) & "_2".visible=false
   Controls("txtOC" & l) & "_3".visible=false
   Controls("txtOC" & l) & "_B".visible=false
 end if
next l

我们将不胜感激。

【问题讨论】:

    标签: asp.net vb.net loops controls


    【解决方案1】:

    您可以按照您的要求做,但要使用 FindControl 并正确连接它。

    If CType(FindControl("txtOC" & l & "_D"), TextBox).Text <>"" Then
       CType(FindControl("txtOC" & l & "_D"), TextBox).Visible=true
    

    如果找不到控件,请将它们放在占位符中,然后在占位符对象上调用 FindControl。

    【讨论】:

    • 完美!这就是我要找的。!
    【解决方案2】:

    你应该寻找反射方法。

    但您也可以创建一个面板并将同一行中的所有这些字段放入其中。 通过这样做,您可以使面板可见或不可见。

    【讨论】:

      【解决方案3】:

      还有第三个选项,您还可以对控件使用 foreach 循环,然后执行您的检查并相应地隐藏或显示。

      【讨论】:

        猜你喜欢
        • 2015-03-08
        • 2011-06-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-10-19
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多