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