10

環境:

  • 剣道編: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
    });
    
  • データを取得:

    productsDataSource.filter([{ フィールド: "Id", 演算子: "eq", 値: 5 }]); //これは httprequest を送信します

    productsDataSource.fetch(function (e) { tempDataStorage = e.items; //データを処理するためのその他のロジック; });

  • 問題:

    1. データ処理 (ウィジェットの初期化、データ バインディングなど) には、dataSource の fetch メソッドを使用する必要があります。
    2. 取得前にフィルターを設定するときに、2 つの httprequest を送信しないようにします。
    3. フィルタ条件は実行時に変更する必要があります。
4

5 に答える 5

5
productsDataSource._filter = { logic: 'and', filters: [
{ field: "Id", operator: "eq", value: 5 }]};

これが機能することがわかりました。内部プロパティをフル フィルタ オブジェクトに設定します。その後、fetch を呼び出すことができます。ただし、フェッチをトリガーせずにページサイズを変更する方法はまだ見つかりません。

于 2013-08-09T08:28:20.893 に答える
4

filter構成で使用できDataSourceます。これにより、構成で指定したフィルタリング条件で 1 つの要求のみが発行されDataSourceます。

于 2013-03-26T11:00:36.363 に答える
3

を使用して dataSource の _filter フィールドを設定し、使用productsDataSource._filter = [{ field: "Id", operator: "eq", value: 5 }];する準備ができたらリモート データのリクエストを手動で開始します。productsDataSource.read();

于 2013-09-27T17:12:24.190 に答える
0

ウィジェットを初期化するデータソースにイベント リスナーをバインドしてから、filter メソッドを使用します。

datasource.one('requestEnd', function(){
   // initialize or/and bind widget
});
datasource.filter({ /*your filter*/ })
于 2014-10-21T14:19:38.420 に答える