如何删除actionccell的click处理程序?

时间:2014-02-19 17:31:43

标签: gwt

我想基于对象的一些输入删除动作单元的单击处理程序。怎么办呢?

目前,我的代码如下所示:

public static Column<vTO, vTO> 
createReissueButtonColumn(String columnName) {
   ActionCell<VolunteerTO> reListCell = new ActionCell<VTO>("Reissue", 
      new ActionCell.Delegate<VTO>() { 
         @Override 
         public void execute(VTO object) { 
            // code to be executed 
         }
      }) 
      { 
         @Override 
         public void render(Cell.Context context,VTO value,SafeHtmlBuilder sb) { 
            if(null != value.getStatus() && !"".equalsIgnoreCase(value.getStatus())) {
               super.render(context,value,sb); 
            } 
         }
   };

   Column<VTO, VTO> reListColumn = new Column<VTO, VTO>(reListCell) { 
      @Override 
      public VTO getValue(VTO object) {
         return object; 
      } 
   }; 

   reListColumn.setDataStoreName(columnName);
   reListColumn.setSortable(false);
   return reListColumn;
}

1 个答案:

答案 0 :(得分:1)

您可以根据自己的条件忽略点击(不执行任何操作)。

编辑: 在您的代码中,在execute()方法中,您可以根据特定条件执行某些操作,也可以不执行此操作。

或者,您可以取消此列上的点击事件:

unitTable.addCellPreviewHandler(new Handler<Unit>() {
    @Override
    public void onCellPreview(CellPreviewEvent<Unit> event) {
        if ("click".equals(event.getNativeEvent().getType())) {
            if (event.getColumn() != myTable.getColumnIndex(reListColumn)) {
                // Check some condition. If necessary:
                event.setCanceled(true);
            }
        }
    }
});