2016-01-20 5 views
1

enter image description here Я пытаюсь использовать древовидную структуру с флажками для определения прав пользователя. (2 действия - включено/отключено право) Как я могу получить значение (id) от родительского узла?Kendo Treeview checked Получить родительский узел при проверке дочерних узлов

Kendo tree view

ответ

0

Пожалуйста, попробуйте ниже фрагмент кода.

<!DOCTYPE html> 
<html> 
<head> 
    <title>Jayesh Goyani</title> 
    <link rel="stylesheet" href="http://kendo.cdn.telerik.com/2015.3.1111/styles/kendo.common.min.css"> 
    <link rel="stylesheet" href="http://kendo.cdn.telerik.com/2015.3.1111/styles/kendo.rtl.min.css"> 
    <link rel="stylesheet" href="http://kendo.cdn.telerik.com/2015.3.1111/styles/kendo.default.min.css"> 
    <link rel="stylesheet" href="http://kendo.cdn.telerik.com/2015.3.1111/styles/kendo.mobile.all.min.css"> 

    <script src="http://code.jquery.com/jquery-1.9.1.min.js"></script> 
    <script src="http://kendo.cdn.telerik.com/2015.3.1111/js/angular.min.js"></script> 
    <script src="http://kendo.cdn.telerik.com/2015.3.1111/js/jszip.min.js"></script> 
    <script src="http://kendo.cdn.telerik.com/2015.3.1111/js/kendo.all.min.js"></script> 
</head> 
<body> 
    <div id="treeview"></div> 
    <p id="result">No nodes checked.</p> 
    <script> 
     $(document).ready(function() { 
      $("#treeview").kendoTreeView({ 
       checkboxes: { 
        checkChildren: true 
       }, 

       check: onCheck, 

       dataSource: [{ 
        id: 1, text: "1", expanded: true, items: [ 
         { 
          id: 2, text: "2", expanded: true, items: [ 
           { id: 3, text: "3" }, 
           { id: 4, text: "4" }, 
           { id: 5, text: "5" } 
          ] 
         }, 
         { 
          id: 6, text: "6", expanded: true, items: [ 
           { id: 7, text: "7" }, 
           { id: 8, text: "8" }, 
          ] 
         }, 
         { 
          id: 9, text: "9", expanded: true, items: [ 
           { id: 10, text: "10" }, 
           { id: 11, text: "11" }, 
           { id: 12, text: "12", expanded: true, items: [{ id: 13, text: "13", expanded: true, items: [{ id: 14, text: "14" }, { id: 15, text: "15" }] }] } 
          ] 
         } 
        ] 
       }] 
      }); 
     }); 
     // function that gathers IDs of checked nodes 
     function checkedNodeIds(nodes, checkedNodes) { 
      for (var i = 0; i < nodes.length; i++) { 
       if (nodes[i].checked) { 
        getParentIds(nodes[i], checkedNodes); 
        checkedNodes.push(nodes[i].id); 
       } 

       if (nodes[i].hasChildren) { 
        checkedNodeIds(nodes[i].children.view(), checkedNodes); 
       } 
      } 
     } 

     function getParentIds(node, checkedNodes) { 
      if (node.parent() && node.parent().parent() && checkedNodes.indexOf(node.parent().parent().id) == -1) { 
       getParentIds(node.parent().parent(), checkedNodes); 
       checkedNodes.push(node.parent().parent().id); 
      } 
     } 

     // show checked node IDs on datasource change 
     function onCheck() { 
      var checkedNodes = [], 
       treeView = $("#treeview").data("kendoTreeView"), 
       message; 

      checkedNodeIds(treeView.dataSource.view(), checkedNodes); 

      if (checkedNodes.length > 0) { 
       message = "IDs of checked nodes: " + checkedNodes.join(","); 
      } else { 
       message = "No nodes checked."; 
      } 

      $("#result").html(message); 
     } 
    </script> 
</body> 
</html> 

Дайте мне знать, если есть вопросы.

+0

Привет Jayesh спасибо за вашу помощь может у меня, пожалуйста, я знаю, как получить родительские идентификаторы, если он содержит несколько дочерних я имею в виду родительский узел 1-й уровень> Второй уровень дочернего узла> и снова дочерний узел, если вы хотите, чтобы я понял, что вы можете проверить мои код или нажмите кнопку (введите описание n image) – Ramu

+0

Привет, Jayesh спасибо за вашу помощь, может у меня, пожалуйста, я знаю, как получить родительские идентификаторы, если он содержит несколько дочерних я имею в виду родительский узел 1-го уровня> Второй дочерний узел> и снова дочерний узел, если вы хотите, чтобы я понял, что вы можете проверить мой код или, пожалуйста, нажмите (введите изображение описания) там, если я выбрал ссылку, я должен получить SubMenuid, Menuid, Moduleid, SWID – Ramu

+0

Я обновил свой выше пост в соответствии с вашими требованиями. –

0

В этом примере возвращается родительский идентификатор для выбранного узла.

treeView.select().parentNode().id; 

Если вам необходимо найти родителя для конкретного узла, необходимо указать селектор в select() функции: treeView.select($("search criteria"))

Если вы хотите, чтобы цикл в родителе, вы можете сделать это

var parentNode = treeView.select().parentNode(); 
while (parentNode) { 
    //Add your parent logic here 
    //... 

    parentNode = parent.parentNode(); 
} 
Смежные вопросы