0

チェックボックスの外観を持つ選択可能なツリーがあります。特定の TreeNode の選択時に、すべての兄弟 TreeNode を選択する必要があります。

すべての兄弟ツリー ノードを取得できましたが、そのチェックボックスを選択するための 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]);
            }
        }
    }
});
4

3 に答える 3

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();
                }
            }

        }
    });
于 2015-12-18T10:07:46.210 に答える
0

次のいずれかを使用できます。

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

最初の方法はTreeNodes、ツリーのすべてを選択します。

TreeNodes2番目のものは、指定されたツリーの1つだけを選択します。

そして 3 つ目は、指定された複数TreeNodesのツリーを選択します。

最後の 2 つのメソッドには複数のオーバーロードされたメソッドがあり、ノードTreeNode(s)自体、または のインデックスでノードを指定できますTreeNode(s)

于 2013-08-01T08:46:08.483 に答える