选择索引事件后动态控制CheckBoxList丢失样式 - ASP.Net C#

时间:2016-09-08 14:47:30

标签: c# asp.net dynamic

我有checkBoxList控件,我在其中动态添加列表项。我在创建时将样式应用于某些列表项。但是,在运行时,当我选择任何列表项时,所有应用了样式的列表项都会失去它们的样式。我该如何解决?

foreach (Group group1 in groups)
{
      if (wObj.Id== id.ToString())
     {
         ListItem li = new ListItem(wObj.GroupName,wObj.ID.ToString());
        li.Attributes.Add("Style", "padding-left: 25px;");
        chkBoxListWorkGroups.Items.Add(li);

     }
}

在选定的索引事件上,我只是检查一些条件并标记列表项已选中。但问题是风格迷失了吗?我的意思是删除所有控件的填充?我该如何解决?

1 个答案:

答案 0 :(得分:2)

这实际上取决于您在page life cycle实施Checkboxlist的方式和时间,这可能是由于多种原因造成的。虽然,大部分时间都是因为当页面在" SelectedIndexChanged"之后重新加载时发生。事件被触发,除非您重新生成/数据绑定您的Checkboxlist属性,否则您的动态Checkboxlist将丢失其ListItem信息。

因此,您可能希望在页面加载中添加以下内容:

protected void Page_Load(object sender, EventArgs e)
{
    if(!Page.IsPostBack)
    { 
        DataBinding_Method_YouWillWrite(); 
    }
}

对于数据绑定方法,一个选项可以是使用Viewstates在Checkboxlist中的特定索引处存储/加载正确的属性。您可以尝试的另一个选项是在每次加载页面时重新生成Checkboxlist,您只需要确保您的Checkboxlist在页面加载时加载任何已检查的列表项(也可以通过使用Viewstates来完成)。这实际上取决于您如何实现代码,有很多不同的方法可以解决这个问题。