Java GWT数据网格列
我有一个GWT项目,它将有几个数据网格。到目前为止,我已经实现了一个(使用Java GWT数据网格列,java,gwt,datagrid,uibinder,Java,Gwt,Datagrid,Uibinder,我有一个GWT项目,它将有几个数据网格。到目前为止,我已经实现了一个(使用ASyncDataProvider),它工作得很好。但我真的不喜欢所有凌乱的锅炉板代码来指定列。以下是一个示例: //some column Column<DataRecord, String> dataColumn = new Column<DataRecord, String>(new TextCell()) { public String getCellStyl
ASyncDataProvider
),它工作得很好。但我真的不喜欢所有凌乱的锅炉板代码来指定列。以下是一个示例:
//some column
Column<DataRecord, String> dataColumn = new Column<DataRecord, String>(new TextCell()) {
public String getCellStyleNames(Context ctx, DataRecord record) {
//some columns have a style based on the value, calculate style here
}
public String getValue(DataRecord record) {
return record.getProperty();
}
};
dataGrid.addColumn(dataColumn);
dataGrid.setColumnWidth(dataColumn, 25, Unit.PX);
//某个列
Column dataColumn=新列(new TextCell()){
公共字符串GetCellStyleName(上下文ctx、数据记录){
//某些列具有基于值的样式,请在此处计算样式
}
公共字符串getValue(数据记录){
return record.getProperty();
}
};
dataGrid.addColumn(dataColumn);
dataGrid.setColumnWidth(dataColumn,25,Unit.PX);
有没有办法减少代码量?假设一个表有十几列,代码会变得非常乏味。网格本身由UiBinder呈现,但UiBinder似乎无法在DataGrid上指定列
我看了一下:
但这涉及到使用HTML表,但我不想失去DataGrid提供的所有功能,所以我不愿意走这条路
任何其他建议都将受到欢迎。使用类MyColumn like
private class MyColumn extends Column<DataRecord, String>
{
private String field;
public MyColumn(String field)
{
super(new TextCell());
this.field = field;
}
public String getValue(DateRecord rec)
{
if (this.field.equals("prop1")
return rec.getProp1();
else if (this.field.equals("prop2")
return rec.getProp2();
else
return "ERROR";
}
}
丑陋,但有效。为了使它更好,您可以使用一些与GWT一起工作的反射工具包
dataGrid.addColumn(new MyColumn("prop1"));
dataGrid.addColumn(new MyColumn("prop2"));