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来实现了.
        问题总算解决了,并且顺便实现了事件触发机制,控件更完善了算是个意外收获.
         总结: 看来服务器端控件必须按照规范实现不同的接口,否则通过不规范的手段实现的功能也很不可靠.
        
  • 相关阅读:
    转让malloc()该功能后,发生了什么事内核?附malloc()和free()实现源
    使用智能移动设备访问Ossim制
    POJ 3207 Ikki's Story IV
    AndroidMainifest标签说明2——<activity>
    POJ1149 PIGS 【最大流量】
    POJ3617 Best Cow Line 馋
    颜色(color)转换为三刺激值(r/g/b)(干股)
    关于SQL中的Update语句
    Java Script 正则表达式的使用示例
    Javascript 知识点简介
  • 原文地址:https://www.cnblogs.com/dajianshi/p/367660.html
Copyright © 2011-2022 走看看