快速业务通道

ASP.NET自定义控件 第二天 带有自定义样式的星级控件

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-20
lls[0];   }      cell.ApplyStyle(TextStyle); }

9. 在网站中声明并定义控件:

<cc:StyleStar ID="star" runat="server" Score="4" 

Comment="Windows XP"> 
  <TextStyle ForeColor="Red" DisplayTextAtBottom="true" />  

  
</cc:StyleStar>

浏览运行结果。

虽然我们在TextItemStyle类中定义了保存和读取视图状态的方法,但是在回 发时能够正常工作吗,尝试在页面的PageLoad方法里设置样式的背景色为红色:

if (!IsPostBack)
  star.TextStyle.BackColor=System.Drawing.Color.Red;

接下来在页面中添加一个服务器端按钮,浏览页面并点击提交按钮,会出现怎 样的结果?可以看到红色背景丢失了,这是由于虽然我们定义了样式类属性保存 的方法,但它还没有真正的参与到页面视图读写过程中,为此,需要重写Start类 的SaveViewState和LoadViewState方法,指定如何将数据保存到视图状态中,以 及如何从视图状态中恢复。

protected override object SaveViewState()
{
  Pair p = new Pair();
  p.First=base.SaveViewState();
  p.Second = ((IStateManager)TextStyle).SaveViewState();
  
  return p;
}
  
protected override void LoadViewState(object savedState)
{
  if (savedState != null)
  {
    Pair p = (Pair)savedState;
  
    base.LoadViewState(p.First);
    ((IStateManager)TextStyle).LoadViewState(p.Second);
  }
}

编译解决方案后再次预览页面,并点击提交按钮,可以看到.NET已经帮助我们 正确的从视图状态中恢复数据了。

总结

本次任务中为星形控件增加了自定义样式,并自定义视图操作状态以更高效的 保存和读取相关数据。在定义属性时候使用了NotifyParentProperty特性和 PersistenceMode特性分别用来在属性发生更改时通知父属性和将属性使用嵌入标 记来保存。可能您会突然想到,如果用户将页面视图状态禁止后会产生什么样的 结果,某些属性还能正确设置吗,下一次任务里我们将讨论这个问题。

本系列文章配套源码

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号