2017-04-20 36 views
0

我有一個RadTreeView的動態水平和可檢查節點根據條件。某些級別可能沒有可檢查節點,某些可檢查節點或所有可檢查節點。Telerik RadTreeView OnClientNode檢查與IE9兼容性問題+

我使用OnClientNodeChecked事件將已檢查節點的ID保留在隱藏字段中以備將來使用,並更新已檢查節點計數器。

每次用戶單擊節點旁邊的複選框時都會觸發此事件。現在,如果用戶移動並點擊複選框,則所有可檢查的子節點應該被選中/取消選中。

這裏是TreeView控件:

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

這裏是JavaScript函數:(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); 
     } 
    } 
} 

這工作完全在Chrome,Firefox和IE8-,但它在IE9 +中不起作用。 的問題是,在IE9 +兩者eventArgs._domEvent.shiftKeyevent.shiftKey未定義

我也試過檢查event.keyCodeevent.which但由於該事件不是一個按鍵的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){...} 

現在,它的工作在每一個瀏覽器。