JQuery EasyUI의 treegrid 캐스케이드 체크 간단한 개선 사항
6706 단어 jquery easyui
Tree 형식은 다음과 같습니다.
0
----1
--------2
--------3
----4
--------5
--------6
--------7
루트 노드는 0이고 레벨은 0이며 두 개의 하위 노드가 있습니다. 1, 4, 레벨은 1입니다.
하위 노드 1, 4 각각의 다중 노드는 2, 3, 5, 6, 7이고 레벨은 2이다.
요구 사항은 다음과 같습니다.
1. 루트 0을 선택할 때 모든 후대 노드를 선택해야 하며 1-7 모두 선택되어야 한다
2. 루트 0 선택을 취소할 때 모든 후대 노드의 선택을 취소해야 합니다. 1-7 모두 선택을 취소해야 합니다.
3. 노드 1을 선택할 때 1의 부모 노드 0도 선택해야 하지만 0의 다른 하위 노드는 자동으로 선택되지 않고 그대로 유지됩니다.
4. 1 노드를 취소할 때 같은 2단계, 후대 노드 2, 3 모두 취소
5. 2 노드를 선택할 때 1, 0 두 노드를 선택해야 합니다.
6. 2를 취소할 때는 3이 선택되었는지, 있다면 1이 선택되었는지, 3이 선택되지 않았다면 1이 선택되지 않았는지, 0이 선택되었는지 1이나 4가 선택되었는지 확인해야 한다
총결산하다
1. 어떤 노드를 선택할 때 반드시 이 노드 아래의 모든 후대 노드를 선택해야 한다. 반대로 후대 노드의 선택을 취소한다.
2. 어떤 노드를 선택할 때 이 노드의 부 노드를 선택해야 한다. 모든 전 세대 부 노드를 포함한다.
어떤 노드를 취소할 때 이 노드의 형제 노드가 선택되지 않으면 부 노드도 선택을 취소하고,
다시 말하면 부모 노드 아래의 하위 노드가 선택되었는지 확인해야 한다. 만약에 부모 노드가 선택되지 않았다면 부모 노드도 선택을 취소할 것이다.
선인의 노동 성공을 찾다
한 문장을 검색하여, 원작자에게 감사를 드립니다.
treegrid 레벨 선택 또는 깊이 레벨 선택 확장: 두 가지 확장
상기 수요의 1, 2의 일부분을 실현하는 두 가지 방식이 있다.
그러나 노드를 취소할 때 부모 노드가 취소되는지 여부에 문제가 있습니다
나는 주로 두 번째 방식(속성 방식, 비함수 방식)을 사용하는데 여기에 함수를 더해서 부 노드가 취소되어야 하는지 아닌지를 판단한다.
1 /**
2 *
3 * @param {Object} target
4 * @param {Object} id ID
5 * @return {TypeName}
6 */
7 function IsParentHasSelectedChildren(target,id,idField,status)
8 {
9 var count=0;
10 var children = target.treegrid('getChildren',id);
11 var selectNodes = $(target).treegrid('getSelections');//
12 var p=target.treegrid('find',id);
13 // , children , , children[i]['_parentId']==p[idField]
14 for(var i=0;i<children.length ;i++ )
15 {
16 var childId = children[i][idField];
17 for(var j=0;j<selectNodes.length;j++){
18 if(selectNodes[j][idField]==childId && children[i]['_parentId']==p[idField])
19 count++;
20 }
21 }
22 // ,click unselect ,
23 return count-1>0;
24 }
주로 함수 IsParentHasSelectedChildren을 증가시킵니다. 부모 노드 아래의 아들 노드가 선택된 개수가 0보다 많은지 부모 노드를 취소할지 여부를 판단합니다.
안에서 마지막으로count에서 1을 줄인 것은 현재 클릭 이벤트가onselect 이벤트와 관련이 있기 때문에 자신을 배제한다는 뜻입니다. 여기에 상세한 연구가 없습니다.
함수 selectParent 안에 아홉 번째 줄로 호출된
1 function selectParent(target,id,idField,status){
2 var parent = target.treegrid('getParent',id);
3 if(parent){
4 var parentId = parent[idField];
5 if(status)
6 target.treegrid('select',parentId);
7 else
8 {
9 if (!IsParentHasSelectedChildren(target,parentId,idField)) 10 target.treegrid('unselect',parentId);
11 }
12 selectParent(target,parentId,idField,status);
13 }
14 }
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
JQuery EasyUI DataGrid 동적 병합 셀js 호출 코드 html js...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.