如何禁用(不删除)gwt的celltable中的列

时间:2015-07-16 14:01:46

标签: gwt

我是GWT新手。我知道tablename.removeColumn(columnname)可用于删除列,但不是删除我想要禁用它。任何人都可以帮忙 thnx提前!

2 个答案:

答案 0 :(得分:0)

有一些方法可以做到这一点,但一个简单而干净的方法是:

public static class CustomTextInputCell extends TextInputCell {
    @Override
    public void render(Context context, String value, SafeHtmlBuilder sb) {
        String url = Window.Location.getHref(); 
        boolean isEditable = url.contains("xyz");

        if (isEditable)  //Condition if editable or not
            super.render(context, value, sb);
        else if (value != null) {
            sb.appendEscaped(value);
        }
    }
}

每次渲染此单元格时都会调用render方法。因此,每次检查是否满足条件时都会启用。 这使您可以保留可编辑单元格的所有功能,但在满足条件时可以轻松禁用它。

你像这样使用它

Column<YOUR_OBJECT_HERE, String> column = new Column<YOUR_OBJECT_HERE, String>(new CustomTextInputCell()); 
cellTable.addColumn(column , "YOUR_HEADER_HERE");

答案 1 :(得分:0)

我最终创建了一个包含我想要的列的新组件,并根据url调用该组件

String url = Window.Location.getHref(); 
boolean value = url.contains("xyz");
if(value)
{
  component.setEnable(true);
 }
else{
  componentprevious.setEnable(true);
     }

enter code here