循环遍历 asp:CheckBox 控件



我的页面上有 11 个这样的控件,都是复选框。 它包含在母版页中。

我可以像这样完成我想要的:

generalInformation.InputAttributes.Add( "class", "SetupChecklist" );
generalInformation2.InputAttributes.Add( "class", "SetupChecklist" );
generalInformation3.InputAttributes.Add( "class", "SetupChecklist" );

等。。

我现在正在尝试遍历这些并做同样的事情来为自己节省一些代码,但我在让它正常工作时遇到了很多麻烦,好吧,我根本无法让它工作。

谁能给我一个好方法来循环浏览这 11 个复选框控件并添加 css 类设置清单?

我试过这个,但由于某种原因它没有添加类。

protected void InitializeCheckboxes ()
    {
        //generalInformation.InputAttributes.Add( "class", "SetupChecklist" );
        var allCheckBoxes = Page.Controls.OfType<CheckBox>();
        foreach ( var c in allCheckBoxes )
        {
            c.InputAttributes.Add( "class", "SetupChecklist" );
        } 
    }

我去用Page_Load方法调用InitializeCheckboxes();。 当我只使用generalInformation.InputAttribues.Add等时,它确实有效。 但当我循环浏览它们时不会。 有什么建议吗?

最好将它们放在Panel(呈现为div)或其他容器控件中。然后你可以使用 LINQ 的OfType获取引用:

// assuming all checkboxes are in a panel named "SetupContainer"
var allCheckBoxes = SetupContainer.Controls.OfType<CheckBox>();
foreach(var chb in allCheckBoxes)
    chb.InputAttributes.Add( "class", "SetupChecklist" );

当然,您也可以使用它来查找整个页面上的所有复选框,但这可能容易出错。

未经测试,但可能会对您有所帮助。

foreach(Control oControl in Page.Controls)
{
  if(oControl is CheckBox && ((CheckBox)oControl).ID.StartsWith("generalInformation") )
   ((CheckBox)oControl).InputAttributes.Add( "class", "SetupChecklist" );
}

由于runat = "server",您的复选框将呈现如下。

<span class="SetupChecklist" class="SetupChecklist" name="generalInformation">
     <input id="generalInformation" type="checkbox" name="generalInformation" />
</span>

杰奎里

<script type="text/javascript" language="javascript" src="Scripts/jquery-1.4.1.min.js"></script>
<script type="text/javascript" language="javascript" src="Scripts/jquery-1.4.1.js"></script>
<script language="javascript" type="text/javascript">
    $(document).ready(function () {
        $(this).find("input[type='checkbox']").addClass('GuestClass');
    });
</script>

这将节省您执行以下步骤的时间。

  1. 从客户端转到
  2. IIS 网络服务器
  3. ISAPI 扩展
  4. ISAPI 扩展加载/执行/将 aspx 转换为 HTML
  5. 发送回 IIS Web 服务器。
  6. IIS 响应客户端
public void GetUserControls(ControlCollection controls)
{
    foreach (Control ctl in controls)
    {
        if (ctl is CheckBoxOrWhateverControlTypeYouWant)
        {
             /// Add attribute
        }
        if (ctl.Controls.Count > 0)
            GetUserControls(ctl.Controls);
    }
}

最新更新