2013-07-31 2 views
0

У меня есть селектируемое дерево с появлением флажка. Мне нужно выбрать все sibling TreeNode для выбора определенного TreeNode.динамически установите флажок для siblings treenode в Smart GWT

Я мог бы получить все узлы дерева сестры, но я не знаю, что такое имя атрибута TreeNode, чтобы сделать этот флажок.

Может кто-нибудь помочь мне дать какой-то способ выбора этих узлов.


compareGrid.addSelectionChangedHandler(new SelectionChangedHandler() { 

    @Override 
    public void onSelectionChanged(SelectionEvent event) { 
     TreeNode node = (TreeNode) event.getSelectedRecord(); 
     TreeNode parent = tree.getParent(node);//tree is Tree object 

     treeGrid.selectRecord(parent); 
     TreeNode[] nodes = tree.getAllNodes(parent); 
     for(int i=0; i< nodes.length; i++){ 
      if(!nodes[i].getAttributeAsBoolean("isSelected")) 
       treeGrid.selectRecord(nodes[i]); 
      } 
     } 
    } 
}); 
+1

Добро пожаловать на SO, его хорошо, чтобы поделиться тем, что вы делали до сих пор для быстрой помощи – Ani

ответ

0

Вы можете использовать любой из следующих действий:

treeGrid.selectAllRecords(); 
treeGrid.selectRecord(record); 
treeGrid.selectRecords(records); 

Первый метод будет выбрать все TreeNodes дерева.

2-й выбирает только один указанный TreeNodes дерева.

И третий будет выбирать несколько указанных TreeNodes деревьев.

Существует несколько перегруженных методов для последних 2 методов, которые позволяют указывать Узлы в терминах, TreeNode(s), или индекс TreeNode(s).

+0

Это не не помогло, мне нужно, чтобы обновить дерево или что-нибудь еще после этого treeGrid.selectRecord (запись)? – user2639759

+0

Что вы передаете как запись? – RAS

+0

Я дам вам свой фрагмент кода. – user2639759

0

Вот решение довольно близко (без флажков) к тому, что вам нужно.

employeeTreeGrid.addNodeClickHandler(new NodeClickHandler() { 
    public void onNodeClick(NodeClickEvent event) { 

     if (event.getNode() != null) { 
      TreeNode node = event.getNode(); 
      TreeNode parent = employeeTree.getParent(node); 

      if (employeeTreeGrid.isSelected(node)) { 
       List<TreeNode> nodesToSelect = new ArrayList<TreeNode>(); 

       // omit parent (root) if on first level 
       if (!"1".equals(node.getAttribute("ReportsTo"))) { 
        nodesToSelect.add(parent); 
       } 

       TreeNode[] siblings = employeeTree.getChildren(parent); 
       nodesToSelect.addAll(Arrays.asList(siblings)); 

       RecordList recordList = employeeTreeGrid.getOriginalRecordList(); 

       for (TreeNode treeNode : nodesToSelect) { 
        Record record = recordList.find("EmployeeId", treeNode.getAttribute("EmployeeId")); 
        if (record != null) { 
         employeeTreeGrid.selectRecord(record); 
        } 
       } 
      } 
     } 
    } 
}); 

должны использовать RecordList и первым найти необходимые записи для того, чтобы использовать ListGrid.selectRecord() методы.
Использование SelectionAppearance.CHECKBOX и SelectionChangedHandler может быть сложным, поскольку программные выделения будут вызывать дополнительные события выбора.

Основано на Checkbox tree sample с изменениями ниже.

// employeeTreeGrid.setSelectionAppearance(SelectionAppearance.CHECKBOX); 
// employeeTreeGrid.setShowSelectedStyle(false); 
employeeTreeGrid.setShowPartialSelection(false); 
// employeeTreeGrid.setCascadeSelection(true); 
employeeTreeGrid.setSelectionType(SelectionStyle.SIMPLE); 
0

Для того, чтобы получить значение выбранного флажка из сетки дерева в смарт-GWT я следующее решение ListGridRecord [] arrRec = event.getSelection(); пример кода ниже.

employeeTreeGrid.setSelectionAppearance(SelectionAppearance.CHECKBOX); 
employeeTreeGrid.setSelectionType(SelectionStyle.SIMPLE); 
employeeTreeGrid.addSelectionChangedHandler(new SelectionChangedHandler() { 
     @Override 
     public void onSelectionChanged(SelectionEvent event) 
      //selectedCounties Set to add selected checkbox or deslected checkbox names/title 
      if (selectedCounties == null || selectedCounties.size() == 0) 
       selectedCounties = new TreeSet<String>(); 
      selectedCounties.clear(); 

      ListGridRecord[] arrRec = event.getSelection(); 
      for (ListGridRecord listGridRecord : arrRec) { 
       selectedCounties.add(listGridRecord.getAttribute("Name")); 
      } 
      // You can do iteration over it if needed 

      selectedCounties.remove("All Counties"); 
      Iterator<String> it = selectedCounties.iterator(); 
      while (it.hasNext()) { 
       if (it.next().contains("Zone")) { 
        it.remove(); 
       } 
      } 

     } 
    }); 
Смежные вопросы