資源描述:
《VS2005 TreeView的checkBox的父子節(jié)點(diǎn)級(jí)聯(lián)狀態(tài)》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。
1、在正在做一個(gè)小項(xiàng)目,用的是vs2005,要用到TreeView來(lái)管理一些分級(jí)數(shù)據(jù),并能允許同時(shí)選中多個(gè)節(jié)點(diǎn),因此需要用到TreeView的ShowCheckBox屬性,當(dāng)我用到的時(shí)候才發(fā)現(xiàn),在選中復(fù)選框時(shí)并不會(huì)引起回發(fā)事件,這時(shí)我就犯愁了,該怎么辦呢,從網(wǎng)上查了好多資料,發(fā)現(xiàn)有不少是用javascript來(lái)實(shí)現(xiàn)的TreeView的父子節(jié)點(diǎn)級(jí)聯(lián)狀態(tài)的,但是這些方法都不太適合VS2005的TreeView,于是我繼續(xù)查閱,發(fā)現(xiàn)了一個(gè)比較適合VS2005的方法,下面這段話就是從一篇文章(作者是veryhappy(wx.net))
2、里摘錄過(guò)來(lái)的:【大家會(huì)在ASP.NET2.0使用TreeView控件時(shí)發(fā)現(xiàn)帶有CheckBox控件的TreeNode對(duì)象(TreeView節(jié)點(diǎn)),選擇CheckBox無(wú)法回發(fā)頁(yè)面。在MSDN中對(duì)于TreeView.TreeNodeCheckChanged事件有一段備注:“當(dāng)TreeView控件的復(fù)選框在兩次向服務(wù)器發(fā)送之間更改狀態(tài)時(shí),會(huì)引發(fā)TreeNodeCheckChanged事件。這使您可以提供一個(gè)這樣的事件處理方法,即每次發(fā)生此事件時(shí)執(zhí)行一個(gè)自定義例程(如更新數(shù)據(jù)庫(kù)或顯示的內(nèi)容)。盡管TreeNodeCheckCha
3、nged事件在回發(fā)時(shí)激發(fā),但更改復(fù)選框不會(huì)導(dǎo)致回發(fā)?!闭f(shuō)明框架本身并不能提供一個(gè)CheckBox回發(fā)的機(jī)制,為了實(shí)現(xiàn)集聯(lián)的選擇,筆者實(shí)現(xiàn)了一種使用JavaScript去回發(fā)的方法,變相的解決了這個(gè)問(wèn)題,盡管這樣的方法看上去很不美,但是一定程度上能解決我們的實(shí)際問(wèn)題。?大致思路,TreeNode對(duì)象輸出的是一個(gè)附和的HTML對(duì)象(包括TD,A,InputCheckBox……),本身沒(méi)有辦法增加客戶端腳本,所以為T(mén)reeView控件客戶端的onclick事件中加入腳本,腳本目的:對(duì)于引發(fā)事件的對(duì)象都做判斷,如果是InputCh
4、eckBox對(duì)象導(dǎo)致的事件,則直接調(diào)用__doPostBack來(lái)回發(fā)頁(yè)面?!?下面就是代碼,我做一些擴(kuò)展,可以實(shí)現(xiàn)點(diǎn)擊某一個(gè)復(fù)選框時(shí),設(shè)置它的父節(jié)點(diǎn)的狀態(tài)(如果它的父節(jié)點(diǎn)的所有子節(jié)點(diǎn)都沒(méi)選中,那么父節(jié)點(diǎn)被設(shè)置為不選中,否則設(shè)置為選中),設(shè)置它的所有子節(jié)點(diǎn)的狀態(tài)為它現(xiàn)在的選中狀態(tài)--------------------HTML頁(yè)面部分-----------------------????VS2005TreeViewCheckBox???5、ipttype="text/javascript">????//點(diǎn)擊復(fù)選框時(shí)觸發(fā)事件????functionpostBackByObject()????{????????varo=window.event.srcElement;????????if(o.tagName=="INPUT"&&o.type=="checkbox")???????{??????????__doPostBack("","");??????}???}
??????6、v>???????????????????????????????????????