Gxt 在网格中使用行编辑和复选框SelectionModel失败

Gxt 在网格中使用行编辑和复选框SelectionModel失败,gxt,Gxt,在GXT网格中我试图使用行编辑和复选框SelectionModel。Sencha Explorer演示在和示例中有这些示例,但没有显示包含这些功能组合的示例。当我在同一个网格上使用这两个特性时,我没有得到我所期望的行为。如果我点击“选择”复选框,该行将被置于编辑模式,我希望该复选框只是从选中变为未选中,反之亦然。此外,将行置于编辑模式时,行上会出现损坏。以下是在单击该行中的任何值之前网格中的一行的示例: 这是单击其中一个值后的行: 有没有人有这方面的经验 更新 下面是一个示例类,它演示了这个

在GXT
网格中
我试图使用
行编辑
复选框SelectionModel
。Sencha Explorer演示在和示例中有这些示例,但没有显示包含这些功能组合的示例。当我在同一个网格上使用这两个特性时,我没有得到我所期望的行为。如果我点击“选择”复选框,该行将被置于编辑模式,我希望该复选框只是从选中变为未选中,反之亦然。此外,将行置于编辑模式时,行上会出现损坏。以下是在单击该行中的任何值之前网格中的一行的示例:

这是单击其中一个值后的行:

有没有人有这方面的经验

更新

下面是一个示例类,它演示了这个问题:

package org.greatlogic.gxtgrid.client;
导入java.util.ArrayList;
导入com.google.gwt.core.client.EntryPoint;
导入com.google.gwt.user.client.ui.RootLayoutPanel;
导入com.sencha.gxt.core.client.IdentityValueProvider;
导入com.sencha.gxt.core.client.ValueProvider;
导入com.sencha.gxt.data.shared.ListStore;
导入com.sencha.gxt.data.shared.ModelKeyProvider;
导入com.sencha.gxt.widget.core.client.ContentPanel;
导入com.sencha.gxt.widget.core.client.form.TextField;
导入com.sencha.gxt.widget.core.client.grid.CheckBoxSelectionModel;
导入com.sencha.gxt.widget.core.client.grid.ColumnConfig;
导入com.sencha.gxt.widget.core.client.grid.ColumnModel;
导入com.sencha.gxt.widget.core.client.grid.grid;
导入com.sencha.gxt.widget.core.client.grid.GridView;
导入com.sencha.gxt.widget.core.client.grid.editing.GridRowEditing;
公共类GXTGrid实现入口点{
//-------------------------------------------------------------------------
@凌驾
moduleload()上的公共void{
ListStore ListStore=新建ListStore(新建ModelKeyProvider()){
@凌驾
公共字符串getKey(Pet){
返回Integer.toString(pet.getPetId());
}
});
IdentityValueProvider ivp=新的IdentityValueProvider();
CheckBoxSelectionModel sm=新的CheckBoxSelectionModel(ivp);
ArrayList ccList=新的ArrayList();
添加(sm.getColumn());
柱状结构cc1;
cc1=newColumnConfig(Pet.getPetNameValueProvider(),100,“Name”);
ccList.add(cc1);
ColumnModel ColumnModel=新ColumnModel(ccList);
网格网格=新网格(listStore,columnModel);
网格设置选择模型(sm);
setView(新的GridView());
GridRowEditing gre=新的GridRowEditing(网格);
gre.addEditor(cc1,新文本字段());
添加(新宠物(1,“小姑娘”);
添加(新宠物(2,“史酷比”);
添加(新宠物(3,“史努比”);
ContentPanel ContentPanel=新ContentPanel();
contentPanel.add(网格);
RootLayoutPanel.get().add(contentPanel);
}
//-------------------------------------------------------------------------
私人静态类宠物{
私人国际小酒店;
私有字符串_petName;
公共静态值提供程序getPetNameValueProvider(){
返回新的ValueProvider(){
@凌驾
公共字符串getPath(){
返回“Pet.PetName”;
}
@凌驾
公共字符串getValue(Pet){
归还宠物。_宠物名;
}
@凌驾
公共无效设置值(Pet,最终字符串值){
pet.\u petName=值;
}
};
}
公共宠物(int-petId,最终字符串petName){
_佩蒂德=佩蒂德;
_petName=petName;
}
公共int getPetId(){
返回_petId;
}
}
//-------------------------------------------------------------------------
}

使用复选框SelectionModel进行GridRow编辑的这种行为是完全正常的

我用你的代码尝试了一些事情。我认为使用
GridRowEditing
CheckBoxSelectionModel
的最佳方法是,正如我所猜测的,双击开始编辑,因为只需单击一次就无法完成编辑。要做到这一点,只需添加

gre.setClicksToEdit(ClicksToEdit.TWO);
否则,如果您确实不想使用两次单击来开始编辑,也可以使用InlineLowediting中的
来进行编辑,这将使您能够根据需要使用
复选框SelectionModel


最终,您可能能够覆盖
GridRowEditing
的整个行为,只需单击一次即可正确处理CheckBoxSelectionModel,但是它会更复杂,需要更具体的GXT框架知识,而我没有。

我还没有找到使用
CheckBoxSelectionModel
解决这个问题的方法,所以我决定尝试另一种方法,即在包含复选框的网格中添加一列,以及手动处理选择的状态。为了做到这一点,我发现我需要对一些事件做出反应,这并不太糟糕。下面是示例代码的新版本,它应该为真正的实现提供一个起点:

import java.util.ArrayList;
导入java.util.TreeSet;
导入com.google.gwt.core.client.EntryPoint;
导入com.google.gwt.dom.client.NativeEvent;
导入com.google.gwt.user.client.ui.RootLayoutPanel;
导入com.sencha.gxt.cell.core.client.form.CheckBoxCell;
导入com.sencha.gxt.core.client.ValueProvider;
导入com.sencha.gxt.core.client.dom.XElement;
导入com.sencha.gxt.data.shared.ListStore;
导入com.sencha.gxt.data.shared.ModelKeyProvider;
导入com.sencha.gxt.widget.core.client.ContentPanel;
导入com.sencha.gxt.widget.core.client.form.CheckBox;
导入com.sencha.gxt.widget.core.client.form.Field;
导入com.sencha.gxt.widget.core.client.form.TextField;
导入com.sencha.gxt.widget.core.client.grid.CellSelectionModel;
导入com.sencha.gxt.widget.core.client.grid.ColumnConfig;
导入com.sencha.gxt.widget.core.client.grid.ColumnModel;
导入com.sencha.gxt.widget.core.client.grid.grid;
导入com.sencha.gxt.widget.core.client.grid.GridView;
导入com.sencha.gxt.widget.core.client.grid.editing.G