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。