记得去年年初的时候做了一个Colorful ListBox Control控件。当时考虑的因数很少,虽然那个控件实现了简单的调用接口,可是有一个致命的问题是居然没有考虑到PostBack后的状态保存问题【转】 简单升级了一下可着色的ListBox控件

 

    新的ColorableListBox解决了控件被PostBack后的状态保存。实现过程很简单,就是把ListItem的ForeColor和BackColor信息存在ViewState里面,自己在控件中去维护。这个功能本来是很简单的,可是在做完后发现也仍然并不完美,因为目前还是不能处理条目移动的问题,如果条目被移动,比如有删除和插入等操作等,ListItem的颜色不能同步。目前的处理办法是如果有ListItem的变动,就清空所有的色彩信息。

 

    执行流程,在控件的OnPerRender事件运触发时,判断ListBox的Item的Attributes.CssStyle属性里是否被设置了color和background-color属性。如果有就记录下其属性值,然后保存在ViewState里,PostBack后从ViewState里恢复Item的属性值,在Render事件里,使用自己保存的属性信息来修改<option ...>...</option>的css属性。 

【转】 简单升级了一下可着色的ListBox控件protected override void OnPreRender(EventArgs e) 
 

控件的使用方法为:
【转】 简单升级了一下可着色的ListBox控件 ColorableListBox clb = new ColorableListBox();
【转】 简单升级了一下可着色的ListBox控件 ListItem li 
= new ListItem(name, value);
【转】 简单升级了一下可着色的ListBox控件 li.Attributes.CssStyle.Add(
"color""yellow");
【转】 简单升级了一下可着色的ListBox控件 li.Attributes.CssStyle.Add(
"background-color""blue");
【转】 简单升级了一下可着色的ListBox控件 clb.Items.Add(li);
    如果重新设置条目后(比如有Insert和Delete操作等)需要调用一下:ClearItemStyles();

【转】 简单升级了一下可着色的ListBox控件//附ColorableListBox控件源码
 

相关文章:

  • 2022-01-12
  • 2022-12-23
  • 2021-10-31
  • 2022-02-16
  • 2022-12-23
  • 2021-10-12
  • 2021-08-12
  • 2021-09-28
猜你喜欢
  • 2022-12-23
  • 2021-06-22
  • 2022-12-23
  • 2021-06-03
  • 2021-06-21
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案