Asp.Net CheckBoxList ListItem CssClass由aspNetDisabled覆盖

时间:2014-01-27 10:52:58

标签: c# asp.net checkboxlist

我在WebFrom上有一个CheckBoxList

<asp:CheckBoxList id="chkList" runat="server">
</asp:CheckBoxList>

现在控件在服务器端填充了类似这样的东西

DataTable dt = myDatasource

foreach(DataRow dr in dt.Rows)
{
   ListItem li = new ListItem();
   li.Attributes.Add("class", (string)dr["CssClass"]);
   //........ Some More Properties.....

   chkList.Items.Add(li);
}

之后我需要根据某些条件禁用一些复选框

foreach(ListItem item in chkList.Items)
{
   if (// Some Condition)
   {
     item.Enabled = false;
   }
}

现在问题是当item.Enabled = false时,类属性被

覆盖
class = "aspNetDisabled";

以及不再填充时应用的类。

我需要该类在javascript中进行一些处理。

2 个答案:

答案 0 :(得分:2)

我有类似的问题。在我的情况下,应用了禁用的元素,aspNetDisabled类和所有禁用的控件都有错误的颜色。所以,我使用jquery来删除每个元素/控件上的这个类,并且一切正常,现在看起来很棒。

这是我删除aspNetDisabled类的代码:

$(document).ready(function () {

    $("span").removeClass("aspNetDisabled");
    $("select").removeClass("aspNetDisabled");
    $("input").removeClass("aspNetDisabled");

}); 

答案 1 :(得分:1)

尝试使用 CssClass 而不是设置课程。

我正在使用 .NET 4.5.1

我已对此进行了测试,看来如果您设置了类属性,li.Attributes.Add("class", (string)dr["CssClass"]); 将使用 aspNetDisabled 覆盖类属性。但是,如果您设置了 CssClass ,那么该值将合并 aspNetDisabled

注意:我看到你用这行代码设置了类:

Array

但是,我应该注意到,当我在标记中设置 class 而不是 CssClass 时,我会看到相同的行为。