최근 더 큰 데이터 세트 (500-1000 + 노드)를 처리 할 때 Telerik Treeview component 및 재귀 선택과 관련된 문제가 발생했습니다. 작은 데이터 세트 (100-300 노드) 트 리뷰와 선택 방법으로Treeview의 재귀 적 확인란 선택 | Telerik MVC
는 다음과 같이 (가 정상적으로) 작동 :
을 처음 - 모든 노드가 선택됩니다.
모든 노드를 선택하면 토글됩니다. 트 리뷰 및 선택을 처리 할 때 부모의 선택을 취소합니다 하나의 자식 노드 (및 조부모/최상위 노드) 내가 믿는 이러한 것들의 대부분
선택을 취소
내가 현재 코드 (아래에서 사용 가능)를 뜯기 시작하기 전에 누군가가 이와 유사한 문제를 처리했는지 궁금했습니다.
기존 선택 코드 :
$('#TreeView').find("li").find('> div > .t-checkbox :checkbox').bind('click', function (e) {
var isChecked = $(e.target).is(':checked');
var treeView = $($(e.target).closest('.t-treeview')).data('tTreeView');
var item = $(e.target).closest('.t-item');
var checkboxes = item.find('.t-checkbox :checkbox');
$.each(checkboxes, function (index, checkbox) { $(checkbox).attr('checked', isChecked ? true : false); treeView.checkboxClick(e, checkbox); });
var siblings = item.parent().find('> li .t-checkbox');
var siblingsLength = siblings.length;
var checkedLength = siblings.find(':checked').length;
if (siblingsLength == checkedLength) {
var parentCheckBox = item.parent().closest('.t-item').find('> div .t-checkbox :checkbox');
var grandparentCheckBox = item.parent().parent().parent().closest('.t-item').find('> div .t-checkbox :checkbox');
parentCheckBox.attr('checked', true)
grandparentCheckBox.attr('checked', true)
treeView.checkboxClick(e, parentCheckBox)
treeView.checkboxClick(e, grandparentCheckBox)
}
else {
var parentCheckBox = item.parent().closest('.t-item').find('> div .t-checkbox :checkbox');
var grandparentCheckBox = item.parent().parent().parent().closest('.t-item').find('> div .t-checkbox :checkbox');
parentCheckBox.attr('checked', false)
grandparentCheckBox.attr('checked', false)
treeView.checkboxClick(e, parentCheckBox)
treeView.checkboxClick(e, grandparentCheckBox)
}
});