SmartGWT 之 TreeGrid 的拖拽排序

使用 ListGrid,当需要排序时,当然可以用上移下移这样的button来做排序。

不过,既然SmartGWT 支持鼠标的Drag and Drop排序,何乐而不为呢。

 

首先,要 setCanReorderRecords( true),这样才能支持鼠标拖拽排序。

其次,要将顺序持久化,就要将当前的顺序保存到服务端。ListGrid 有个 

addRecordDropHandler,本来想用这个,后来一看,这个是在drop 

之前调用的,这个时候还不知道drop之后的顺序,所以不行。后来找到

了一个 addDragStopHandler,终于是在排序之后调用的。接下来就

简单了,直接上代码:

 

        final DataSource ds = DataSource.get( "node");
        nodesGrid.setShowAllRecords( true);
        nodesGrid.setCanReorderRecords( true);
        nodesGrid.setSortField( "index");
        nodesGrid.addDragStopHandler( new DragStopHandler() {
            @Override
            public void onDragStop(DragStopEvent event) {
                final ListGridRecord[] records = nodesGrid.getRecords();
                for ( int i=0; i<records.length;i++) {
                    final ListGridRecord record = records[ i];
                    System.out.println( record.getAttribute( "name"));
                    record.setAttribute( "index", i);
                    nodesGrid.updateData( record);
                }
            }
        });

 

这样做还有个小问题,不是批量保存的,会影响效率,有待改进。

你可能感兴趣的:(treegrid)