Gwt 多项目列表网格过滤
我目前正在使用过滤器设置一个Gwt 多项目列表网格过滤,gwt,smartgwt,gwt-rpc,listgrid,Gwt,Smartgwt,Gwt Rpc,Listgrid,我目前正在使用过滤器设置一个ListGrid,但是在为具有多个项目选择的字段实现过滤器时遇到了问题 下面是我想要实现的一个例子: 我有一个带有以下值的ListGrid: _________________ |Fruits Selected| |_______________| |Apple | |Apple,Orange | |Orange | |_______________| 当我尝试在“多项目过滤器”中过滤并选择橙色时,我希望在我的网格上看到: __
ListGrid
,但是在为具有多个项目选择的字段实现过滤器时遇到了问题
下面是我想要实现的一个例子:
我有一个带有以下值的ListGrid
:
_________________
|Fruits Selected|
|_______________|
|Apple |
|Apple,Orange |
|Orange |
|_______________|
当我尝试在“多项目过滤器”中过滤并选择橙色时,我希望在我的网格上看到:
_________________
|Fruits Selected|
|_______________|
|Apple,Orange |
|Orange |
|_______________|
但相反,我只看到:
_________________
|Fruits Selected|
|_______________|
|Orange |
|_______________|
我对预期输出的解释是否错误?如果是这样,有没有一种方法可以自定义处理多个项目筛选器的方式
另一件事,我正在使用这个论坛上的GenericGwtRpcDataSource
。希望这不是一个问题
以下是所需的示例代码:
数据源
public class FruitLocalDS extends DataSource {
private static FruitLocalDS instance = null;
public static FruitLocalDS getInstance() {
if (instance == null) {
instance = new FruitLocalDS("supplyItemLocalDS");
}
return instance;
}
public FruitLocalDS(String id) {
setID(id);
DataSourceEnumField fruitNameField = new DataSourceEnumField(
"fruitNames", "Fruit Name");
fruitNameField.setMultiple(true);
fruitNameField.setValueMap("Apple", "Guyabano", "Pineapple", "Orange",
"Grapes");
setFields(fruitNameField);
setClientOnly(true);
setTestData(Fruit.getDummyRecords());
}}
ListGridRecord:
public class Fruit extends ListGridRecord {
public Fruit(String[] fruitNames) {
setFruitNames(fruitNames);
}
public void setFruitNames(String[] fruitNames) {
setAttribute("fruitNames", fruitNames);
}
public String getFruitName() {
return getAttribute("fruitNames");
}
public static Fruit[] getDummyRecords() {
return new Fruit[] {
new Fruit(new String[]{"Orange"}),
new Fruit(new String[]{"Apple", "Orange"}),
new Fruit(new String[]{"Guyabano","Orange"}),
new Fruit(new String[]{"Pineapple","Orange"}),
};
}}
public class MultiItemTest implements EntryPoint {
public void onModuleLoad() {
final DataSource dataSource = FruitLocalDS.getInstance();
ListGrid listGrid = new ListGrid();
listGrid.setWidth(1000);
// listGrid.setAutoFitData(Autofit.VERTICAL);
listGrid.setHeight(224);
listGrid.setDataPageSize(50);
listGrid.setDataSource(dataSource);
listGrid.setShowFilterEditor(true);
listGrid.setCanEdit(true);
listGrid.setAutoFetchData(true);
listGrid.setEditEvent(ListGridEditEvent.DOUBLECLICK);
listGrid.setShowRowNumbers(true);
listGrid.setFilterOnKeypress(true);
listGrid.setFetchDelay(1);
listGrid.draw();
}}
入口点:
public class Fruit extends ListGridRecord {
public Fruit(String[] fruitNames) {
setFruitNames(fruitNames);
}
public void setFruitNames(String[] fruitNames) {
setAttribute("fruitNames", fruitNames);
}
public String getFruitName() {
return getAttribute("fruitNames");
}
public static Fruit[] getDummyRecords() {
return new Fruit[] {
new Fruit(new String[]{"Orange"}),
new Fruit(new String[]{"Apple", "Orange"}),
new Fruit(new String[]{"Guyabano","Orange"}),
new Fruit(new String[]{"Pineapple","Orange"}),
};
}}
public class MultiItemTest implements EntryPoint {
public void onModuleLoad() {
final DataSource dataSource = FruitLocalDS.getInstance();
ListGrid listGrid = new ListGrid();
listGrid.setWidth(1000);
// listGrid.setAutoFitData(Autofit.VERTICAL);
listGrid.setHeight(224);
listGrid.setDataPageSize(50);
listGrid.setDataSource(dataSource);
listGrid.setShowFilterEditor(true);
listGrid.setCanEdit(true);
listGrid.setAutoFetchData(true);
listGrid.setEditEvent(ListGridEditEvent.DOUBLECLICK);
listGrid.setShowRowNumbers(true);
listGrid.setFilterOnKeypress(true);
listGrid.setFetchDelay(1);
listGrid.draw();
}}
当您尝试在过滤器中选择“橙色”时,它将仅显示:
Orange
我所期望的是:
Apple,Orange
Guyabano,Orange
Orange
Pineapple, Orange
对我来说,它工作得很好。你能展示一些代码吗?我将尝试创建最简单的代码示例并发回。谢谢你的回复。不管怎样,你也在使用GWT RPC吗?我也在使用GWT RPC。