Gwt 如何删除actionccell的单击处理程序?

Gwt 如何删除actionccell的单击处理程序?,gwt,Gwt,我想根据对象的一些输入删除操作单元的单击处理程序。如何做到这一点 目前,我的代码如下所示: public static Column<vTO, vTO> createReissueButtonColumn(String columnName) { ActionCell<VolunteerTO> reListCell = new ActionCell<VTO>("Reissue", new ActionCell.Delegate<VT

我想根据对象的一些输入删除操作单元的单击处理程序。如何做到这一点

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

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;
}
公共静态列
createReissueButtonColumn(字符串columnName){
ActionCell reListCell=新的ActionCell(“重新发布”,
新建ActionCell.Delegate(){
@凌驾
公共无效执行(VTO对象){
//要执行的代码
}
}) 
{ 
@凌驾
公共void呈现(Cell.Context上下文、VTO值、SafeThMLBuilder sb){
if(null!=value.getStatus()&&&!“”.equalsIgnoreCase(value.getStatus()){
超级渲染(上下文、值、sb);
} 
}
};
列reListColumn=新列(reListCell){
@凌驾
公共VTO getValue(VTO对象){
返回对象;
} 
}; 
reListColumn.setDataStoreName(columnName);
reListColumn.setSortable(假);
返回重新列表列;
}

根据您的情况,您可以忽略单击(不做任何事情)

编辑: 在代码中,在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);
            }
        }
    }
});
unitTable.addCellPreviewHandler(新处理程序(){
@凌驾
公共void onCellPreview(CellPreviewEvent事件){
如果(“单击”.equals(event.getNativeEvent().getType())){
if(event.getColumn()!=myTable.getColumnIndex(reListColumn)){
//检查某些情况。如有必要:
event.setCancelled(true);
}
}
}
});

给你邮件id。我会和你分享吗?@AndreiVolgin我已经为他添加了。他只是有点困惑,不知道该把它放在哪里。我在安德烈对这个问题的回答上添加了你建议编辑的代码。正如你所知,问题是你应该在哪里包括像这样的更新信息。