0

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

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

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

ETC..

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

谁能给我一个循环遍历这 11 个复选框控件并添加 css 类 SetupChecklist 的好方法?

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

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

我去调用InitializeCheckboxes();Page_Load 方法。当我只使用 generalInformation.InputAttribues.Add 等时它确实有效。但当我遍历它们时却不行。有什么建议么?

4

4 回答 4

3

最好的办法是将它们放在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" );

当然你也可以用它来查找整个页面上的所有 CheckBox,但这可能容易出错。

于 2012-04-18T15:51:44.627 回答
1

未经测试,但可以帮助你..

foreach(Control oControl in Page.Controls)
{
  if(oControl is CheckBox && ((CheckBox)oControl).ID.StartsWith("generalInformation") )
   ((CheckBox)oControl).InputAttributes.Add( "class", "SetupChecklist" );
}
于 2012-04-18T15:51:37.060 回答
1

由于runat = "server".

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

jQuery

<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 响应客户端
于 2012-04-18T15:58:07.960 回答
0
public void GetUserControls(ControlCollection controls)
{
    foreach (Control ctl in controls)
    {
        if (ctl is CheckBoxOrWhateverControlTypeYouWant)
        {
             /// Add attribute
        }

        if (ctl.Controls.Count > 0)
            GetUserControls(ctl.Controls);
    }
}
于 2012-04-18T15:51:18.310 回答