??首先給需要的列添加復(fù)選框;
{ field: 'CHECKED_TASK_PROGRESS', checkbox: true, title: '', width: 90, align: 'left' },
??看到的效果就是這樣;
??
image.png
??我這里的展開子級是通過異步加載的;
//點擊父節(jié)點,異步加載數(shù)據(jù)
onBeforeExpand: function (row) {
if (row) {
var parentId = row.ORDER_ID;//父節(jié)點ID
var url = "Ajax/Ajax.ashx?OperateType=GetChildren&parent_id=" + parentId;
$('#ErpTreeGird').treegrid("options").url = url;
}
},
??但是這里我只需要選擇父節(jié)點的復(fù)選框,不需要選擇子級;所以我就要想辦法吧子級的復(fù)選框給隱藏掉;
// 加載數(shù)據(jù)完成
onLoadSuccess: function (row, data) {
var rowData = data;
// 子級復(fù)選框不需要選擇,這里做復(fù)選框刪除
if (rowData[0] && rowData[0].PARENT_ID && rowData[0].PARENT_ID != "0") {
// 取出加載的子級的父節(jié)點
var p = $("#ErpTreeGird").treegrid("getParent", rowData[0].ORDER_ID);
if (p) {
var pORDER_ID = p.ORDER_ID;
// 記錄父節(jié)點索引
var pIndex;
var getData = $("#ErpTreeGird").treegrid("getData");
$.each(getData, function (idx, val) {//遍歷JSON
if (val.ORDER_ID == pORDER_ID) {
pIndex = idx;
return;
}
});
//console.log("pIndex:" + pIndex)
// 循環(huán)子級 刪除復(fù)選框
let flagNum = 0;
for (let i = 0; i < rowData.length; i++) {
let item = rowData[i];
if (item.PARENT_ID && item.PARENT_ID != "0") {
$(".datagrid-cell-check input[type='checkbox']")[i - flagNum + pIndex + 1]
.remove();
flagNum++;
};
}
}
}
},
??這里的onLoadSuccess是每次加載成功后的事件,當展開父級異步加載時,data參數(shù)就是子級數(shù)據(jù)。
??通過getParent方法得到父級節(jié)點,然后得到父級的索引,注意,這里我本來是想通過這個方法getRowIndex(row)獲得索引,但是這個方法只有datagrid支持,treegrid好像不支持。
??得到父級索引,就能找到展開的子級索引了,然后循環(huán)刪除即可。
??結(jié)果如下:
??
image.png