級聯勾選子節點:函數
步驟:this
1.在treegrid的onCheck事件中寫上函數(級聯勾選子節點):code
onCheck : function(row){ t = $(this); opts = t.treegrid("options"); if (opts.checkOnSelect && opts.singleSelect) { return; } var idField = opts.idField, id = row[idField], children, checked, parent = row; //若是當前節點被勾選,那麼勾選該節點的子節點 $.each(t.treegrid("getChildren", id), function (i, n) { if (!t.treegrid("isChecked", n[idField])) { t.treegrid("check", n[idField]); } }); },
2.在onUncheck事件中寫上函數(級聯取消勾選子節點):事件
t = $(this); opts = t.treegrid("options"); if (opts.checkOnSelect && opts.singleSelect) { return; } var idField = opts.idField, id = row[idField], children, checked, parent = t.treegrid("getParent", id); $.each(t.treegrid("getChildren", id), function (i, n) { t.treegrid("uncheck", n[idField]); });
第二種:選擇子節點須要將父節點選中get
onCheck事件:io
onCheck : function(row){ t = $(this); opts = t.treegrid("options"); if (opts.checkOnSelect && opts.singleSelect) { return; } var idField = opts.idField, id = row[idField], children, checked, parent = t.treegrid("getParent", id); while (parent) { children = t.treegrid("getChildren", parent[idField]); checked = t.treegrid("getChecked"); if (!$.array.some(children, function (val) { return !$.array.contains(checked, val); })) { if (!t.treegrid("isChecked", parent[idField])) { t.treegrid("check", parent[idField]); } } parent = t.treegrid("getParent", parent[idField]); } $.each(t.treegrid("getChildren", id), function (i, n) { //若是子節點沒有勾選,那麼勾選子節點 if (!t.treegrid("isChecked", n[idField])) { t.treegrid("check", n[idField]); } }); }
onUncheck事件:function
onUncheck:function(row){ t = $(this); opts = t.treegrid("options"); if (opts.checkOnSelect && opts.singleSelect) { return; } var idField = opts.idField, id = row[idField], children, checked, parent = t.treegrid("getParent", id); while (parent) { children = t.treegrid("getChildren", parent[idField]); checked = t.treegrid("getChecked"); if (!$.array.some(children, function (val) { return $.array.contains(checked, val); })) { if (t.treegrid("isChecked", parent[idField])) { t.treegrid("uncheck", parent[idField]); } } parent = t.treegrid("getParent", parent[idField]); } $.each(t.treegrid("getChildren", id), function (i, n) { t.treegrid("uncheck", n[idField]); }); },
總結下:grid
treegrid上面的兩個函數:總結
onCheck : function(row){ t = $(this); checkChildren(t,row); }, onUncheck:function(row){ t = $(this); unCheckChildren(t,row); },
自定義函數:while
/** * treegrid的級聯勾選和級聯取消勾選子節點 */ function checkChildren(t,row){ opts = t.treegrid("options"); if (opts.checkOnSelect && opts.singleSelect) { return; } var idField = opts.idField, id = row[idField], children, checked, parent = row; //若是當前節點被勾選,那麼勾選該節點的子節點 $.each(t.treegrid("getChildren", id), function (i, n) { if (!t.treegrid("isChecked", n[idField])) { t.treegrid("check", n[idField]); } }); } function unCheckChildren(t,row){ opts = t.treegrid("options"); if (opts.checkOnSelect && opts.singleSelect) { return; } var idField = opts.idField, id = row[idField], children, checked, parent = t.treegrid("getParent", id); $.each(t.treegrid("getChildren", id), function (i, n) { t.treegrid("uncheck", n[idField]); }); }