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来实现了.
        问题总算解决了,并且顺便实现了事件触发机制,控件更完善了算是个意外收获.
         总结: 看来服务器端控件必须按照规范实现不同的接口,否则通过不规范的手段实现的功能也很不可靠.
        
  • 相关阅读:
    转载:网关的概念以及形象的比喻
    IP地址的分类
    Linux TOP 交互命令
    Unix系统引导过程(简单步骤)
    常用shell命令中你所不熟悉的参数
    3.通过现有的PDB创建一个新的PDB
    2.oracle 12c 创建-访问-关闭-删除PDB
    1.oracle 12c基础
    笔记本设置无线热点
    Pivot 和 Unpivot
  • 原文地址:https://www.cnblogs.com/dajianshi/p/367660.html
Copyright © 2011-2022 走看看