ASP.NET自定义控件 第二天 带有自定义样式的星级控件
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 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |