我是GXT的新手,我试图在3.0.1版本上执行此操作:
我有一个基于showcase example的可编辑网格,我修改了使用 SimpleComboBox 的列的代码,因为我需要处理要显示的值和id就像在普通的HTML中,我找不到使用SimpleComboBox执行此操作的方法。
现在我正在使用 ComboBoxCell 和 ComboBox 来实现这一目标,但我有两个问题。
当表格显示时,组合列不会像内联编辑列一样呈现(如示例中的那样)。 以下是列创建的代码:(ObjectDTO只有id和value属性)
public class MyGrid implements IsWidget {
private GridEditing<MyGridDTO> columnEditing;
//another variables needed to create and handle the grid
public MyGrid(){
List<ColumnConfig<MyGridDTO, ?>> listColumns = new ArrayList<ColumnConfig<MyGridDTO, ?>>();
sm.setSelectionMode(SelectionMode.SINGLE);
//...
ColumnConfig<MyGridDTO, ObjectDTO> colsomeProperty = new ColumnConfig<MyGridDTO, ObjectDTO>(
properties.someProperty(),170,cons.gbsomePropertyTitle());
//...
ComboBoxCell<ObjectDTO> somePropertyCell = new ComboBoxCell<ObjectDTO>(somePropertysStore,new LabelProvider<ObjectDTO>() {
public String getLabel(ObjectDTO item) {
return item.getDescripcion();
}
});
listColumns.add(colSomeProperty);
colSomeProperty.setCell(somePropertyCell);
final ComboBox<ObjectDTO> combo = new ComboBox<ObjectDTO>(somePropertyCell);
columnEditing.addEditor(colSomeProperty,combo);
columnEditing.addBeforeStartEditHandler(new BeforeStartEditHandler<MyGridDTO>() {
public void onBeforeStartEdit(BeforeStartEditEvent<MyGridDTO> event) {
//handle whether or not to allow column editing
}
});
}
}
在我遇到问题#2之前,这不是什么大不了的事。
我必须根据我正在尝试编辑的行,在我的网格中只读取一些列。我通过在MyGridDTO中使用属性布尔值来确定是否可以编辑此对象。 thig是:当编辑comboBox列时,没有gridEditingevents上升,我认为这是因为ComboBox已经可见而且在内联编辑属性后面没有“隐藏”。我的意思是,因为它已经可见,所以GridEting不再用于处理编辑事件。那可能吗?
此时我不知道该怎么做,因为我找不到这方面的工作。如果关于这方面的信息很少或者我以错误的方式进行研究(我很可能),我就不会感到害羞
任何线索?
PD:请为我的英语道歉。答案 0 :(得分:3)
有三种方法可以设置GXT网格以允许行进行编辑。您似乎同时使用这三种方法中的两种,这可能是问题1的根源。
允许用户编辑网格中的行的两种主要方式是基于inline-和row-的编辑。有一些具体的例子描述了如何设置它们 - 本质上,你告诉网格如何绘制数据,然后指示* GridEditing对象如何让用户操纵数据。这两个工具都提供了额外的工作流程详细信息(描述开始/完成/取消编辑的事件),并在修改行/单元格时更改它的样式。
第三个选项是直接向网格添加单元格。这会跳过任何样式或工作流更改,只是让用户按原样编辑数据(有关此内容的详细信息,请查看cellgrid example)。
看来你正在使用第一个和第三个选项 - 你正在创建一个GridInlineEditing对象,然后设置它,然后将一个ComboBoxCell添加到ColumnConfig,从而要求Grid在每个单元格中绘制一个ComboBox即使不进行编辑也是如此。
相反,您可能只需要默认行为(无单元格),将值绘制为字符串,或者为您的用例执行某些特定绘制的自定义AbstractCell子类。