2016-11-01 3 views
0

Я пытаюсь создать «динамический доступ к ресурсам» для определенных узлов в существующем динамическом древовидном представлении.Создайте TreeView из отмеченных флажков отмеченных TreeView

Главное TreeView содержит флажки и заполняется из базы данных. У меня есть вторая таблица в базе данных, где сохраняется доступ пользователя к этому TreeView.

Проблема заключается в том, что когда я пытаюсь установить useraccess, в основном дереве нет флажков «3-состояния», а Ref-ID для некоторых узлов не будет частью обратной передачи. Я использую JavaScript:

Treeview in web form check child nodes on parent node check

Я не могу построить новый TreeView из данных в постбэка из-за отсутствия родительского узла (Ref-Node), который не является частью постбэка.

Отображаемое изображение на дереве ниже отображает проблему, при снятии шкафа 2, комната 2 не отмечена, но так же, как и местоположение 1 и Demotop. Справочный узел к номеру 1 (местоположение 1) не является частью отмеченных флажков, а затем ссылка в базе данных теряется! Любые предложения по тому, как это решить?

[enter image description here [enter image description here]

ответ

0

Законченный с использованием Dynatree вместо использования TreeView.

с поддержкой этого: How can I read parent nodes with partly selected child nodes

Этот код решить мою проблему:

$(function() { 
     $("#tree").dynatree({ 
      checkbox: true, 
      selectMode: 3, 
      onSelect: function (select, node) { 
       var selKeys = $.map(node.tree.getSelectedNodes(), function (node) { 
        return node.data.key; 
       }); 
       var partsel = new Array(); 
       $(".dynatree-partsel:not(.dynatree-selected)").each(function() { 
        var node = $.ui.dynatree.getNode(this); 
        partsel.push(node.data.key); 
       }); 

       selKeys = selKeys.concat(partsel);     
      }, 
      onClick: function (node, event) { 

       if (node.getEventTargetType(event) == "title") 
        node.toggleSelect(); 
      }, 
      onDblClick: function (node, event) { 
       node.toggleSelect(); 
      }, 
      onKeydown: function (node, event) { 
       if (event.which == 32) { 
        node.toggleSelect(); 
        return false; 
       } 
      }   
     }); 
    }); 
Смежные вопросы