2017-04-20 3 views
0

동적 인 레벨과 조건에 따라 체크 가능한 노드가있는 RadTreeView가 있습니다. 일부 레벨에는 점검 가능 노드, 점검 가능 노드 또는 점검 가능 노드가 없을 수 있습니다.Telerik RadTreeView OnClientNodeChecked IE9의 호환성 문제 +

OnClientNodeChecked 이벤트를 사용하여 체크 노드의 ID를 숨겨진 필드에 보관하여 나중에 사용할 수 있도록하고 체크 된 노드 카운터를 업데이트합니다.

이 이벤트는 사용자가 노드 옆에있는 확인란을 클릭 할 때마다 발생합니다. 이제 사용자가 체크 박스를 Shift + 클릭하면 검사 가능한 모든 하위 노드를 선택/선택 해제해야합니다.

여기 트 리뷰 컨트롤입니다 :

<telerik:RadTreeView RenderMode="Lightweight" runat="Server" ID="treeAccounts" EnableDragAndDrop="false" EnableDragAndDropBetweenNodes="false" Skin="Vista" CheckBoxes="True" 
       OnClientLoad="initializeSelectedNodes" OnClientNodeChecked="treeNodeChecked"> 
      </telerik:RadTreeView> 

그리고 여기에 자바 스크립트 함수입니다 : (treeNodeChecked OnClientNodeChecked에서라고합니다)

var tree; 

function treeNodeChecked(sender, eventArgs) { 

    tree = $find("<%= treeAccounts.ClientID %>"); 
    var node = eventArgs.get_node(); 

    //Here I save the ID of the checked node 
    updateSelectedNodes(node); 

    if (eventArgs._domEvent.shiftKey || event.shiftKey) { 

     var children = node.get_allNodes(); 
     var checkedState = node.get_checked(); 

     //If the checked node had children and the shift key was pressed 
     //when the checkbox was clicked then I check/uncheck its child 
     //nodes. 
     for(m in children) 
     { 
      var child = children[m]; 
      child.set_checked(checkedState); 

      //Here I save the ID of the child nodes 
      updateSelectedNodes(child); 
     } 
    } 
} 

이는 크롬, 파이어 폭스와 IE8-에서 완벽하게 작동, 하지만 그것은 IE9 +에서 작동하지 않습니다. 문제 IE9 + 모두 eventArgs._domEvent.shiftKey 및 event.shiftKey에정의을 있다는 것이다.

는 또한 event.keyCode 또는 event.which를 확인하려했지만 이벤트가 키를 누를 때 NOT 때문에 또는를 keyDown, 그들은뿐만 아니라 정의되지 않은이다.

어떻게 IE9 +에서이 작업을 수행 할 수 있습니까? 미리 감사드립니다.

답변

0

도처에서 파기하고 난 길을 발견했습니다.

는이 코드 추가 :

var shiftKeyPressed; 

document.addEventListener("keydown", keyDownEvent, false); 

function keyDownEvent(e) { 
    var keyCode = e.keyCode; 
    if(keyCode==16) { 
     shiftKeyPressed = true; 
    } 
} 

document.addEventListener("keyup", keyUpEvent, false); 

function keyUpEvent(e) { 
    var keyCode = e.keyCode; 
    if(keyCode==16) { 
     shiftKeyPressed = false; 
    } 
} 

을 그리고 내가 확인할 때 Shift 키 내가 새로운 변수를 추가 누르면 :

if (eventArgs._domEvent.shiftKey || event.shiftKey || shiftKeyPressed){...} 

지금은 모든 브라우저에서 작동하고 있습니다.