Kendo DataSource:如何在获取之前设置过滤器而不发送两个httprequests

Dea*_*ean 10 datasource odata kendo-ui

环境:

  • kendo版本:2013.1.319
  • 数据源:

    productsDataSource = new kendo.data.DataSource({
        type: "odata",
        transport: {
            read: "http://www.mydomain.com/odata.svc/products",
            dataType: "json",
            contentType: "application/json"
        }
        schema: {
            type: "json",
            data: function(data){
                return data.value;
            },
            total: function(data){
                return data['odata.count'];
            },
            model: product
        },
        pageSize: 50,
        serverPaging: true,
        serverFiltering: true,
        serverSorting: true
    });
    
    Run Code Online (Sandbox Code Playgroud)
  • 获取数据:

    productsDataSource.filter([{field:"Id",operator:"eq",value:5}]); //这将发送一个httprequest

    productsDataSource.fetch(function(e){tempDataStorage = e.items; //处理数据的更多逻辑;});

  • 问题:

    1. 需要使用dataSource的fetch方法进行数据处理(小部件初始化,数据绑定等);
    2. 在fetch之前设置过滤器时避免发送两个httprequest;
    3. 过滤条件需要在运行时更改.

Dan*_*ell 5

productsDataSource._filter = { logic: 'and', filters: [
{ field: "Id", operator: "eq", value: 5 }]};
Run Code Online (Sandbox Code Playgroud)

我发现这个工作.将内部属性设置为完整的过滤器对象.然后你可以调用fetch.我还没有找到一种方法来改变页面大小而不触发提取.


Ona*_*Bai 4

您可以filterDataSource配置中使用用户。这应该仅发出一个具有您在DataSource配置中指定的过滤条件的请求。