我有一个页面,其中有许多(100+)个字段,它们的功能都相似。显示页面时,将检查从数据库读取的每个字段的值,以确定字段的显示属性和几个相关字段。看代码示例。
If fieldvalue = 2 Then
Myfield.visible = False
Myfieldx.Checked = False
Myfieldz.visible = True
ElseIf fieldvalue = 1 Then
Myfield.visible = True
Myfieldx.Checked = True
Myfieldz.visible = False
Else
Myfield.visible = True
Myfieldx.Checked = False
Myfieldz.visible = False
End If
每个字段都进行了相同的测试。每组字段也有一个固定的命名约定,以便我可以使用子例程来执行此操作。 字段名,字段名+ x,字段名+ z
上面的代码效果很好,但是为很多字段(每个字段都有不同的ID)复制很多代码。我想简化上面的代码使用例程来做这个测试。像
这样的东西Protected Sub CheckStatusLoad(ByVal fieldID As String, ByVal fieldvalue As Integer)
Dim fieldIDx As String, fieldIDz As String
fieldIDx = String.Concat(fieldID, "x")
fieldIDz = String.Concat(fieldID, "z")
Dim Mainfield As New WebControls.Button
Dim MainfieldChkBox As New WebControls.CheckBox
Dim MainfieldStrike As New WebControls.Button
Mainfield = DirectCast(Page.FindControl(fieldID), WebControls.Button)
MainfieldChkBox = DirectCast(Page.FindControl(fieldIDx), WebControls.CheckBox)
MainfieldStrike = DirectCast(Page.FindControl(fieldIDz), WebControls.Button)
If fieldvalue = 2 Then
Mainfield.Visible = False
MainfieldChkBox.Checked = False
MainfieldStrike.Visible = True
ElseIf fieldvalue = 1 Then
Mainfield.Visible = True
MainfieldChkBox.Checked = True
MainfieldStrike.Visible = False
Else
Mainfield.Visible = True
MainfieldChkBox.Checked = False
MainfieldStrike.Visible = False
End If
End Sub
然后为每个正在加载的字段调用
CheckStatusLoad("fieldname", testval)
此代码现在可以使用FindControl。我只需要使用语法来正确调整引号。
答案 0 :(得分:0)
上面的代码已经过编辑,现在可以使用了。我花了一些时间来理解Page.FindControl,但是一旦我得到了正确的语法,它就可以正常工作。