addhandler xdlstfriends.editcommand, addressof xdlstfriends_itemcommand
內層控制項資料繫結與事件宣告在外層的itemdatabind中實現;例子中外層datalist的id為dlquestion,內層為dlitem;**如下
private void dlquestion_itemdatabound(object sender, system.web.ui.webcontrols.datalistitemeventargs e)
dlitem .itemcommand += new datalistcommandeventhandler(dlitem_itemcommand);
dlitem .itemdatabound += new datalistitemeventhandler(dlitem_itemdatabound);
int qid = ((invquestion)e.item.dataitem).que_id;
arraylist al = invcontroller.getitemcollection( qid );
dlitem .datasource = al;
dlitem .databind();
} }
} 其中viewstate對狀態資訊的讀取和下面的儲存聯絡後再討論;
下面以內層datalist的edit事件為例;
private void dlitem_itemcommand(object source, datalistcommandeventargs e)
//得到內層datalist
datalist dl = (datalist)e.item.parent;
dl.edititemindex = e.item.itemindex;
//儲存狀態資訊
viewstate["repindex"] = e.item.itemindex;
// response.write(e.item.itemindex);
//重新繫結內層datalist資料
arraylist al = invcontroller.getitemcollection( qid );
dl.datasource = al;
dl.databind();
} }
在內層datalist中e.commandname="edit"事件中必須儲存viewstate["index"] = e.item.index資訊;否則在e.commandname="update"中得不到editindex的資訊.需要儲存viewstate的原因是:由於暫時沒有找到更好的方法,內層datalist資料繫結需要在每個事件發生時對外層datalist重新繫結,也就是在page.load中載入databind()事件,對效率有一定影響
js動態新增事件 事件委託
其所謂的動態新增事件實質就是指js中的事件委託。我們知道在js中,事件處理只能繫結在當前被選中的元素上,換句話也就是說,事件處理只能繫結在當前文件已經存在的元素上!但是,往往小夥伴們都會遇到乙個問題就是,我的元素是後來動態新增到頁面的,而我又想給該元素繫結事件,怎麼處理?為了說明白這一問題,我們假設...
js動態新增事件 事件委託
其所謂的動態新增事件實質就是指js中的事件委託。我們知道在js中,事件處理只能繫結在當前被選中的元素上,換句話也就是說,事件處理只能繫結在當前文件已經存在的元素上!但是,往往小夥伴們都會遇到乙個問題就是,我的元素是後來動態新增到頁面的,而我又想給該元素繫結事件,怎麼處理?為了說明白這一問題,我們假設...
JQ 為未來元素新增事件處理器 事件委託
隨著dom結構的複雜化和ajax等動態指令碼技術的運用,有了較多的動態新增進來的元素,直接用jq新增click事件會發現新新增進來的元素並不能直接選取到,在這裡就需要用到事件委託方法,jq為事件委託提供了live dalegate 和on 方法。我們知道,dom在為頁面中的每個元素分派事件時,相應的...