如何在gxt EditorGrid中取消BeforeEdit事件,该事件基于存储在所选行的模型中的数据

时间:2012-03-22 18:13:09

标签: gxt

我有一个EditorGrid。如果用户没有该特定列的编辑权限,我想取消编辑(使用BeforeEdit事件)。此数据(“canEdit”值)位于行的数据存储中,但尚未向网格添加列。

我认为解决这个问题的最佳方法是取消BeforeEdit事件中的编辑。但是,我遇到麻烦,从BeforeEdit事件中的选定行获取数据。如果有人可以通过一个小代码片段向我指出正确的方向,以便如何从BeforeEdit事件中的选定行中获取数据值,我将非常感激!或者,如果有更好的方法继续下去,我很乐意听取您的意见。

谢谢! 珍

2 个答案:

答案 0 :(得分:0)

final EditorGrid<Plant> grid = new EditorGrid<Plant>(store, cm);        
grid.addListener(Events.BeforeEdit, new Listener<GridEvent<Plant>>(){

    @Override
        public void handleEvent(GridEvent<Plant> be) {
            //This retrieves the model being edited.
            Plant model = be.getModel();
            GWT.log("Model edited "+model.getName());           
        }           
});

此代码段使用GXT提供的示例程序。您可以看到原始示例的演示以及完整代码here

答案 1 :(得分:0)

这是我用过的工作:

grid.addListener(Events.BeforeEdit, new Listener<BaseEvent>() {
   @Override
   ModelData comment = ((EditorGrid)be.GetSource().getSelectionModel().getSelectedItem();
   Boolean canEdit = Boolean.parseBoolean(comment.get("canEdit").toString());
   be.setCancelled(!canEdit);
}