zoukankan      html  css  js  c++  java
  • 组件开发之IPostBackDataHandler和OnLoad

        今天,做了一个UserControl,里面包含两个自定义控件,由于需要自动更新用户回发的数据,所以在OnLoad事件中获取用户数据,可是其中的日期选取控件,使用了两次,却只有一个控件可以取得正确的用户数据! 调试半天不得其法,终于发现自定义控件也是在OnLoad事件中更新自己的值,估计是执行顺序造成的.
        将控件改为实现IPostBackDataHandler接口
    #region IPostBackDataHandler 成员

            
    public bool LoadPostData(string postDataKey, System.Collections.Specialized.NameValueCollection postCollection)
            {
                
    string txt = postCollection[this.UniqueID + ":txtText"];
                
    string val = postCollection[this.UniqueID + ":txtValue"];
                
    if(txt!= Text  || val!=Value )
                {

                    ViewState["Text"= txt;
                    ViewState[
    "Value"= val;
                    
    return true;
                }
                
    return false;
            }
            
    public event EventHandler ValueChanged;
            
            
    public void RaisePostDataChangedEvent()
            {
                
    if (ValueChanged != null)
                    ValueChanged(
    this, EventArgs.Empty);
            }

            
    #endregion
        改造之后终于可以在UserControl中正确取得用户回填的值了!试着在UserControl这一级也使用这种方式取数,有出现了刚才的问题!看来在UserControl级别只能使用OnLoad来实现了.
        问题总算解决了,并且顺便实现了事件触发机制,控件更完善了算是个意外收获.
         总结: 看来服务器端控件必须按照规范实现不同的接口,否则通过不规范的手段实现的功能也很不可靠.
        
  • 相关阅读:
    三、sersync+rsync实现服务器文件实时同步
    二、Linux实时同步软件之inotify
    一、rsync基础原理
    Samba实战
    DHCP企业实战
    NTP服务器企业实战
    Vsftpd服务器原理及部署
    Python的五大数据类型的作用、定义方式、使用方法,两种交互式方式,格式化输出的三种方式练习。
    pycharm快捷键,变量,字符串,类型的操作方法
    python基础归纳练习 python两种方式,垃圾回收机制,小数整池,数字类型,字符串类型。
  • 原文地址:https://www.cnblogs.com/dajianshi/p/367660.html
Copyright © 2011-2022 走看看