1

分页功能和本地过滤是完美的,但我需要远程过滤器,我想将过滤器参数发送到请求方法。

谢谢!

我有这个代码:

String path =  GWT.getHostPageBaseURL() + (Examples.isExplorer() ? "" : "../../" ) + "backend/index.php?action=getLines";  

RequestBuilder builder = new RequestBuilder(RequestBuilder.GET, path);  
HttpProxy<String> proxy = new HttpProxy<String>(builder);  

JsonPagingLoadResultReader<PagingLoadResult<ModelData>> reader = new JsonPagingLoadResultReader<PagingLoadResult<ModelData>>(type);  

final PagingLoader<PagingLoadResult<ModelData>> loader = new BasePagingLoader<PagingLoadResult<ModelData>>(proxy,  
    reader);

[...]


NumericFilter sorszamFilter = new NumericFilter("Sorszam");

StringFilter nevFilter = new StringFilter("Nev");

DateFilter datumFilter = new DateFilter("Datum");
NumericFilter szamFilter = new NumericFilter("Szam");

GridFilters filters = new GridFilters();
filters.setLocal(true);
filters.addFilter(sorszamFilter);
filters.addFilter(nevFilter);
filters.addFilter(datumFilter);
filters.addFilter(szamFilter);

//example
sorszamFilter.addListener(Events.Update, new Listener<FilterEvent>() {
    @Override
    public void handleEvent(FilterEvent be) {
        ???
    }

});

[...]

final PagingToolBar toolBar = new PagingToolBar(10);  
toolBar.bind(loader);  

loader.load(0, 10); 
4

1 回答 1

1

看起来BasePagingLoader可以使用 loadConfig 对象进行自定义。loadConfig 应该是 ModelData 类型的 Object,更具体地说是 PagingLoadConfig。使用

final ModelData loadConfig = (ModelData) ((BasePagingLoader).loader).newLoadConfig();

方法。然后强制加载器使用这个 loadConfig:

((BasePagingLoader).loader).useLoadConfig(loadConfig);

loadConfig 应该是 ModelData 的可变实例。这就是为什么您可以使用

loadConfig.set("selectedFilter", "what_ever_you_like_here")
loadConfig.set("direction", "ASC");

这应该代替您输入的问号完成,并且应该强制 HttpProxy 将您设置的任何内容添加到 loadConfig 属性。(有关如何借助 loadConfig 构建请求,请参阅HttpProxy#generateUrl方法)。然后你必须在服务器端相应地处理请求。我假设你使用 GXT 2.2.x,老实说我还没有编译它,希望它能正常工作。

于 2012-09-06T15:48:55.107 回答