有核取方塊的樹的延展

2021-04-23 06:39:59 字數 2346 閱讀 5921

ext2.x提供了簡單的checkbox實現,但對於一些複雜的需求,如: 級聯多選(選中父結點,自選中其所有子結點和所有父結點) , 單選等等, ext2.x並沒有幫我們實現

還有最難解決的情況, 當樹是非同步的時候, 要想級聯多選, 實現起來有些難度

在此, 通過對ext.tree.treenodeui進行擴充套件,這些問題都得到很好的解決

/**

* @class ext.tree.treechecknodeui

* @extends ext.tree.treenodeui

* * 對 ext.tree.treenodeui 進行checkbox功能的擴充套件,後台返回的結點資訊不用非要包含checked屬性

* * 擴充套件的功能點有:

* 一、支援只對樹的葉子進行選擇

* 只有當返回的樹結點屬性leaf = true 時,結點才有checkbox可選

* 使用時,只需在宣告樹時,加上屬性 onlyleafcheckable: true 既可,預設是false

* * 二、支援對樹的單選

* 只允許選擇乙個結點

* 使用時,只需在宣告樹時,加上屬性 checkmodel: "single" 既可

* * 二、支援對樹的級聯多選

* 當選擇結點時,自動選擇該結點下的所有子結點,以及該結點的所有父結點(根結點除外),特別是支援非同步,當子結點還沒顯示時,會從後台取得子結點,然後將其選中/取消選中

* 使用時,只需在宣告樹時,加上屬性 checkmodel: "cascade" 既可

* * 三、新增"check"事件

* 該事件會在樹結點的checkbox發生改變時觸發

* 使用時,只需給樹註冊事件,如:

* tree.on("check",function(node,checked));

* * 預設情況下,checkmodel為'multiple',也就是多選,onlyleafcheckable為false,所有結點都可選

* * 使用方法:在loader裡加上 baseattrs: 既可.

* 例如:

* var tree = new ext.tree.treepanel( //新增 uiprovider 屬性

* }),

* root: new ext.tree.asynctreenode()

* });

* tree.on("check",function(node,checked)); //註冊"check"事件

* tree.render();

* */

ext.tree.treechecknodeui = function() ;

ext.extend(ext.tree.treechecknodeui, ext.tree.treenodeui, else

this.elnode = this.wrap.childnodes[0];

this.ctnode = this.wrap.childnodes[1];

var cs = this.elnode.childnodes;

this.indentnode = cs[0];

this.ecnode = cs[1];

this.iconnode = cs[2];

var index = 3;

if(cb)

this.anchor = cs[index];

this.textnode = cs[index].firstchild;

}, // private

check : function(checked) else

n.attributes.checked = checked;

tree.fireevent('check', n, checked);

if(!this.onlyleafcheckable && this.checkmodel == 'cascade')

if( !n.expanded && !n.childrenrendered )

else

}else if(this.checkmodel == 'single')

} return false;

}, togglecheck : function(value)

} });

使用方法都在注釋裡了,應該已經很詳細了,我就不多說了

需要注意的是, 使用例子裡的tree 使用了ext.tree.dwrtreeloader這個擴充套件類,用來載入後台樹結點,這和使用其它的loader沒有區別的,

如果您使用其它的loader, 同樣加上baseattrs: 就行了

核取方塊的提交方法

接收頁面 request.setcharacterencoding utf 8 response.setheader iso 8859 1 utf 8 response.setcharacterencoding utf 8 string name code txt name request.getp...

帶核取方塊的ListBox

具體實現步驟舉例如下 1 首先在視窗上拖放乙個listbox控制項,假設其資源id為idc list1 2 如上所述修改該listbox控制項的屬性 lbs ownerdrawfixed lbs hasstrings 3 定義cchecklistbox物件,在視窗類的標頭檔案裡 dlg.h cche...

jquery核取方塊的操作

1 獲取單個checkbox選中項 三種寫法 input checkbox checked val 或者 input type checkbox checked val 或者 input name ck checked val 2 獲取多個checkbox選中項 input checkbox eac...