我正在使用具有三种状态的jstree复选框 - 已选中,未确定且未选中。当我检查父节点时,子节点被自动检查。当我选择子节点时,部分选择父节点。我已将已检查,未确定的状态保存为1,并在数据库中取消选中为0。
$('#btnSubmit').bind('click', function (e) {
e.preventDefault();
var checked_ids = [];
$('.jstree-checked, .jstree-undetermined').each(function () {
var id = $(this).children('a').attr('id');
checked_ids.push(id);
});
$.ajax({
url: '@Url.Action("Action", "Controller")',
type: 'POST',
traditional: true,
data: { AccessIds: checked_ids },
success: function () {
checked_ids.length = 0;
alert('success!');
},
error: function () {
alert('Error!');
}
});
return false;
});
现在我想以三态加载树。如果选择了子项,如何部分选择父项。 我正在做这样的事情:
$(function () {
$('.divchkboxtree #divtree').jstree({
"plugins": ["themes", "html_data", "checkbox", "sort", "ui"]
})
.bind('loaded.jstree', function () {
$('.Node').each(function () {
var id = $(this).attr('id');
$('.divchkboxtree #divtree').jstree("check_node", '#' + id);
});
})
});
这里' .Node' class保存已检查的ID。现在,当我加载树时,问题是检查所有节点的位置,检查父节点,因为我已将部分选定的值保存为1.
答案 0 :(得分:3)
最后我得到了答案。我从后端维护它。我有一个字段Object
,如果它是父节点,则为空。所以我所做的是提取非父母的数据,即我提取了那些IsSelected is 1 i.e. true
以及最后代码工作的孩子。上述代码没有变化。