【问题标题】:get controls in ContentPlaceHolder asp.net with for each在 ContentPlaceHolder asp.net 中为每个获取控件
【发布时间】:2014-10-18 21:24:43
【问题描述】:

我有一个带有母版页和 ContentPlaceHolder 的 asp 表单 我想在我的页面中找到所有控件(复选框、文本框、标签、...) 我这样做(没有母版页)正常

 Dim c As Control
    For Each c In Page.Controls
        For Each childc In c.Controls
                If CType(childc, TextBox).Text <> "" Then

但此代码不使用母版页回答 我不需要这个代码

TextBox TB=Master.FindControl("ContentPlaceHolder1").FindControl("textbox1") as TextBox;

因为我想要所有控件

【问题讨论】:

  • 您可以以FindControl("ContentPlaceHolder1").Controls 开头,而不是Page.Controls。但这不适用于嵌套控件(例如在Panel 甚至GridView 中)。你为什么需要它。在正确的位置搜索,而不是循环所有子控件。
  • 感谢我有大约 60 个控件(文本框,drp,chk,...)和数据库,当用户单击此 for 循环中的发送按钮时,我想要搜索所有控件并将值保存在数据库中没有正确的母版页,但我现在做不到我测试您的解决方案并更改 page.control 但视觉工作室说错误“对象引用未设置为对象的实例”

标签: asp.net vb.net master-pages contentplaceholder


【解决方案1】:

你可以这样做。循环遍历所有控件,在循环迭代中检查它们的Type,根据您的情况,采取行动或获取价值并对它们进行操作。

For Each c In Master.FindControl("ContentPlaceHolder1").Controls
    If TypeOf c Is TextBox Then
        Dim text As TextBox = CType(c, TextBox)
        ' Write code textbox handling
    End If
    If TypeOf c Is CheckBox Then
        Dim chk As CheckBox = CType(c, CheckBox)
        ' Write code checkbox handling
    End If
    If TypeOf c Is DropDownList Then
        Dim ddl As DropDownList = CType(c, DropDownList)
        ' Write code Dropdownlist handling
    End If
Next

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-18
    • 2013-12-25
    • 1970-01-01
    • 2023-03-10
    相关资源
    最近更新 更多