分析AJAX WebShop DataSet與DBControl資料感應機制

來源:互聯網
上載者:User

分析AJAX WebShop DataSet與DBControl資料感應機制

實現原理       通過註冊資料感應對象列表,在DataSet發生相應事件時,通知所有註冊的資料感應對象,資料感應對象在得到通知時,根據通知的訊息編號與資料,進行相關執行比如重新整理顯示等。訊息編號modify:12open:0refresh:5close:7move record:3append:1delete:2firedatachange:6post:13cancel:9apply:8fieldvalue firechange:4notify lookup dataset:11程式分析       以DBEdit為例,首先DBEdit設定屬性DataSet或SetDataSet,將調用LinkObj將DBEdit註冊到資料感應對象列表,這個列表實際是一個數組,在DataSet發生相關事件時,將調用Notify通知數據感應對象列表中的所有對象,而所有的資料感應對象都有一個介面實現HandleMessage,用於在DataSet中調用,看一下Notify的實現就清楚了:

DataSet.prototype.Notify=function(act,recno,p){var os=this.linkobjs;if(!os||this.AutoControl==false)return;for(var j=0;j<os.length;j++)if(os[j].HandleMessage)os[j].HandleMessage(this,act,recno,p);}
       然後看看DBEdit的HandleMessage做了些什麼,見下面實現,無非是重新整理顯示資料,呵呵,就這麼簡單。
function DC_handlemessage(sender,msg,recno){   if(msg!=6&&msg!=12)       this.Refresh();}function DC_refresh(){ var v,f; if(this.DataSet.Active){   f=this.DataSet.Fields.Field[this.DataField];   if(!f)jcl_err(this.Name+'.DataField:'+this.DataField+Err_NoField);   if(f){       this.readOnly=f.ReadOnly;    v=f.GetValue();    if(v==null)v='';this.value=v;    if(this.Type=='span')this.innerHTML=v;//DBLabel       if(this.Type=='checkbox'){if(this.CheckedValue == v){        this.checked=true;              this.defaultChecked=true;                         }else{        this.checked=false;        }    }   } } else{    this.value='';    if(this.Type=='span')this.innerHTML='';//DBLabel }}

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.