Vaadin-禁用特定列的列重新排序

Vaadin-禁用特定列的列重新排序,vaadin,multiple-columns,Vaadin,Multiple Columns,我在瓦丁7号做一个项目 在我的项目中,我需要为Treetable中的特定列禁用列重新排序功能 我真的在搜索像“setColumnReorders()”这样的函数 在瓦丁7号有可能吗 或者我需要用“ColumnReorderListener()”编写一些代码 更新 此代码用于设置树表中固定的第一列。我想在树表的层次结构列中禁用重新排序 public class CustomTreeTable extends TreeTable { private static final long serial

我在瓦丁7号做一个项目

在我的项目中,我需要为Treetable中的特定列禁用列重新排序功能

我真的在搜索像“setColumnReorders()”这样的函数

在瓦丁7号有可能吗

或者我需要用“ColumnReorderListener()”编写一些代码

更新

此代码用于设置树表中固定的第一列。我想在树表的层次结构列中禁用重新排序

public class CustomTreeTable extends TreeTable {

private static final long serialVersionUID = 1L;
private Object[] visibleColumns;
private KeyMapper<Object> columnIdMap = new KeyMapper<Object>();

@Override
public void paintContent(PaintTarget target) throws PaintException {
    super.paintContent(target);
    paintColumnOrder(target);
}

private void paintColumnOrder(PaintTarget target) throws PaintException {
    visibleColumns = this.getVisibleColumns();
    final String[] colorder = new String[visibleColumns.length];
    int i = 0;
    colorder[i++] = columnIdMap.key("Column 1"); // Logic to keep the first column fixed
    for (Object colId : visibleColumns) {
        if(!colId.equals("Column 1")) {
            colorder[i++] = columnIdMap.key(colId);
        }
    }
    target.addVariable(this, "columnorder", colorder);
}
}
我打电话来

paintVisibleColumnOrder(target), 
paintAvailableColumns(target), 
paintVisibleColumns(target). 

我只能停止对表头的重新排序。但是,机构仍在重新排序。对此问题有任何猜测吗?

在文档中,只有
setColumnReorderingAllowed()
允许控制所有列的重新排序。所以,如果您的案例是控制特定的行为,那么在我看来,这是一种非常定制的行为,我将使用自己的实现。另外,
ColumnReorderEvent
是在处理操作本身之后生成的,因此实现自己的
columnReorderListener
在这里对我们没有帮助

我们想要更改的所有实际魔法都发生在
私有表中。paintColumnOrder()
公共表调用。paintContent()
,从
公共树表调用。paintContent()
(请参阅和的源代码)。解决办法是:

  • 扩展
    TreeTable
  • 使用
    Table.paintContent()
    TreeTable.paintContent()的合并副本覆盖
    paintContent()
  • 用自定义逻辑替换
    paintColumnOrder()
    调用
  • 更新


    好的,现在我看到它比我一开始想的更棘手,因为在对TreeTable子类化之后,没有简单的方法可以访问大多数必需的字段和方法。。。此外,在客户端对列进行重新排序,只发送更改事件状态以通知服务器。我不知道如何在不创建自定义gwt小部件的情况下处理自定义重新排序:(

    有人请回答这个问题..嘿,奥斯卡..谢谢你的想法..我尝试了你说的..但它不起作用..检查我更新的问题..纠正我的错误..实际上我想在树表的层次结构列中禁用重新排序。
    paintVisibleColumnOrder(target), 
    paintAvailableColumns(target), 
    paintVisibleColumns(target).