EasyUI為TreeGrid的已勾選節點,未勾選節點,只勾選部分子節點的父節點分別添加了三個不同的樣式,如下:
樣式一:tree-checkbox2 有子節點被選中
樣式二:tree-checkbox1 節點被選中
樣式三:tree-checkbox0 節點未選中
那么,我們就可以依據這三個樣式分別取到所有已勾選的主鍵值了,為方便使用,我們寫成TreeGrid的擴展方法,代碼如下:
$.extend($.fn.treegrid.methods, {
//iscontains是否包含父節點(即子節點被選中時是否也取父節點)
getAllChecked: function (jq, iscontains) {
var keyValues = new Array();
/*
tree-checkbox2 有子節點被選中的css
tree-checkbox1 節點被選中的css
tree-checkbox0 節點未選中的css
*/
var checkNodes = jq.treegrid("getPanel").find(".tree-checkbox1");
for (var i = 0; i < checkNodes.length; i++) {
var keyValue1 = $($(checkNodes[i]).closest('tr')[0]).attr("node-id");
keyValues.push(keyValue1);
}
if (iscontains) {
var childCheckNodes = jq.treegrid("getPanel").find(".tree-checkbox2");
for (var i = 0; i < childCheckNodes.length; i++) {
var keyValue2 = $($(childCheckNodes[i]).closest('tr')[0]).attr("node-id");
keyValues.push(keyValue2);
}
}
return keyValues;
}
});
調用方法:
var kv = $("#XXX").treegrid("getAllChecked", true);
alert(kv);
另外,1.4.5版本以后的,提供如下幾個方法:
var kv = $("#XXX").treegrid("getCheckedNodes"); 獲取勾選的節點
var kv = $("#XXX").treegrid("checkNode",id); 根據ID勾選節點
var kv = $("#XXX").treegrid("uncheckNode",id); 根據ID取消勾選節點