【问题标题】:how to put selection in first row after sorting in nat table?在 nat 表中排序后如何将选择放在第一行?
【发布时间】:2018-01-29 03:24:44
【问题描述】:

如何在 nat 表中排序后将选择放在第一行,我正在使用 SortHeaderLayer 进行排序.....提前谢谢

 SortHeaderLayer<Mapping> sortHeaderLayer =new SortHeaderLayer<Mapping>(columnHeaderLayer, new GlazedListsSortModel<Mapping>(sortedList,columnAccessor,configRegistry, columnHeaderDataLayer), false);

谢谢

【问题讨论】:

    标签: eclipse-plugin eclipse-rcp nattable


    【解决方案1】:

    这可以通过注册ILayerListener 来完成。唯一要记住的是,SortColumnEvent 首先被触发,然后GlazedListsEventLayer 触发RowStructuralRefreshEvent 以触发重新绘制。这将在不使用RowSelectionModel 时删除选择。因此,需要以响应式方式设计侦听器。

        // an ILayerListener that performs a selection after a refresh and 
        // unregisters itself afterwards
        ILayerListener sortListener = new ILayerListener() {
    
            @Override
            public void handleLayerEvent(ILayerEvent event) {
                if (event instanceof RowStructuralRefreshEvent) {
                    natTable.doCommand(new SelectRowsCommand(natTable,
                            1, 1, false, false));
                    natTable.removeLayerListener(this);
                }
            }
        };
    
        // register an ILayerListener that registers the above listener
        // on a SortColumnEvent
        natTable.addLayerListener(new ILayerListener() {
    
            @Override
            public void handleLayerEvent(ILayerEvent event) {
                if (event instanceof SortColumnEvent) {
                    natTable.addLayerListener(sortListener);
                }
            }
        });
    

    【讨论】:

    • 感谢您的回复......我还需要知道一件事......我们如何将选定的行放在表格的第一个位置......排序后......跨度>
    • 在这种情况下,您需要更改排序算法或使用 RowReorderLayer。没有什么可以免费解释的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-18
    • 2021-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-26
    相关资源
    最近更新 更多