我的页面上有11个这样的控件,都是复选框。它包含在母版页中。
我可以完成我想要的事情:
generalInformation.InputAttributes.Add( "class", "SetupChecklist" );
generalInformation2.InputAttributes.Add( "class", "SetupChecklist" );
generalInformation3.InputAttributes.Add( "class", "SetupChecklist" );
等。
我现在正试图遍历这些并做同样的事情来保存自己的一些代码,但是我在使这个工作正常工作方面遇到了很多麻烦,我根本无法让它工作。
有人能给我一个很好的方法来循环这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" );
}
}
我在Page_Load方法中调用InitializeCheckboxes();
。当我只使用generalInformation.InputAttribues.Add等时,它确实有效。但是当我循环它们时它不会。有什么建议吗?
答案 0 :(得分:3)
最好将它们放在Panel
(呈现为div)或其他容器控件中。然后,您可以使用LINQ&#39; 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,但这可能容易出错。
答案 1 :(得分:1)
未经测试但可能对您有帮助..
foreach(Control oControl in Page.Controls)
{
if(oControl is CheckBox && ((CheckBox)oControl).ID.StartsWith("generalInformation") )
((CheckBox)oControl).InputAttributes.Add( "class", "SetupChecklist" );
}
答案 2 :(得分:1)
由于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>
这将为您节省下列步骤的时间。
- 从客户转到
- IIS Web服务器
- ISAPI扩展
- ISAPI扩展加载/执行/将aspx转换为HTML
- 发送回IIS Web服务器。
- IIS回复客户端
醇>
答案 3 :(得分: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);
}
}