zoukankan      html  css  js  c++  java
  • 自定义控件开发之自定义视图状态

       这篇,我将谈谈自己在开发自定义控件中的一些方法。

       现在.net集成性太强,好多东西都不用自己去写,这让C++的相当羡慕,哈哈,所以那些麻烦的事(自定义控件)程序员都不去自己做,但是会底层的原理还是比较有好处的。

       如果一个控件中有非常多的属性的话,你会选择全写在一个类中吗?

      一般的人都会说不,因为这样的代码一看就晕,不好管理.如果能够按控件的特性来分开写的话,应该会好很多,这样在程序员调用的时候也好设置相关的属性.

        前几篇文章我一直在做自定义分页控件.我们知道自定义分页控件如果做完善的话特别麻烦,理所当然的相应的属性也就特别多.所在根据我自己的实际情况,我把自己的分页控件分为三个类:

        分页控件中部分类图结构:

      

     

      1: CustomPagerSetting 分页控件相关设置

      2 :CustomPagerText 分页控件相关文本设置

      3:CustomInfoSectionSetting 分页控件自定义信息区设置

         如此多的属性如果是放在一个类中那是相当麻烦的.为此我们可以将它们分开形成内嵌属性.

    Code

         
         如何形成内嵌属性我现在不想多说,此时的控件属性如果是在代码中动态设置的话,如果页面没有回发事件,都是正常的,

    但是如果有回发所有的属性都要重新赋值,否则所有的属性值都会丢失.

         我们知道viewstate是不能保存复杂属性,就像上面的三个类,它只能保存简单属性,例如int,string等.

         刚开始的时候我在CustomPagerSetting为中修改,将里面的属性都用viewstate保存,但是编译通不过,提示不存在viewstate对象,但是在控件文件中是可以的,那是因为控件自己继承control类,类文件又不能继承control,所以我们需要自定义一个ViewState属性
     
    Code

        自定义类型状态管理,那么我们就必须接触到IStateManager这个接口实现这个接口要实现三个方法:


    Code

        这些MSN上都可查.这还不行,还要在控件类中实现自定义视图管理.


    Code

        

        此时我们再试的时候,发现回发的时候,属性就不会丢失了。


  • 相关阅读:
    FastReport.Net使用:[13]如何使用表达式
    FastReport.Net使用:[11]公共对象属性介绍
    FastReport.Net使用:[10]报表栏目说明
    FastReport.Net使用:[9]多栏报表(多列报表)
    FastReport.Net使用:[8]交叉表一
    FastReport.Net使用:[7]打印空白行
    FastReport.Net使用:[6]HTML标签使用
    测试,测试开发,QA,QM,QC--------- 测试之路勿跑偏
    java 接口自动化测试之数据请求的简单封装
    java HttpClient POST请求
  • 原文地址:https://www.cnblogs.com/ASPNET2008/p/1158486.html
Copyright © 2011-2022 走看看