15

データを読み取る前に KendoUI DataSource の並べ替えパラメータをプログラムで設定し、2 番目のサーバー読み取りを回避することは可能ですか? スコープは、特定のユーザー インタラクションでデフォルトの並べ替えを設定しています。どのように?

これは、私がやろうとしていることの例です。答えが要点に達していないためです (または、物事がどのように機能するかを理解していない可能性があります)。

初期ソートで Kendo DataSource を定義します。

var datasource = new kendo.data.DataSource({
    parameterMap: function (inputParams, operation) {
        return JSON.stringify(inputParams)
    },
    // default sort
    sort: [
        {field: "field_1", dir: "asc"},
        {field: "field_2", dir: "asc"}
    ]
});

この DataSource は Kendo グリッドにバインドされています。

var grid = $("element").kendoGrid({
    dataSource: datasource   
});

次に、DataSource で「読み取り」を呼び出し、グリッドにデータの最初のページを入力するボタンがあります。

$("#btn").bind("click", function(e) {
    datasource.page(1);
}); 

このようにして、ボタンをクリックした後、ユーザーは「field_1」と「field_2」で並べ替えられたデータを取得し、グリッドは列ヘッダーでこの並べ替えを表示します。ユーザーは、列ヘッダーをクリックして、任意の方法でデータを並べ替えることができます。

私がやりたいことは、DataSource 宣言で定義されているように、デフォルトの並べ替えを最初の並べ替えにリセットし、列ヘッダーに再度表示し、新しい DataSource を再度作成することなく行うことです。

何かのようなもの:

$("#btn").bind("click", function(e) {
    datasource.sort = [
        {field: "field_1", dir: "asc"},
        {field: "field_2", dir: "asc"}
    ]; 
    datasource.page(1);
}); 

提供された解決策は要点に達していないようです (それでも、それほど些細ではないように思われ、フレームワークによって対処されるべき正当な質問に対して、なぜ私が評判ポイントを失っているのか理解できません)。

私が間違っていることを教えてください (私は評判を失うことを心配していません - 問題を解決する方法を理解したいだけです)。

4

5 に答える 5

1

はい。ソート設定で可能です。

于 2012-12-13T15:34:51.913 に答える
1

私はあなたが達成しようとしていることを知っています。ユーザーの並べ替えとフィルタリング (私の場合はクライアント側) を保存していて、他の理由でグリッド関数getOptions/setOptionsを使用できないため、同じことをしなければなりませんでした。autobind:falseを設定しても、autobind の定義が表示されている場合は、期待どおりに動作しません。

http://docs.telerik.com/kendo-ui/api/javascript/ui/grid#configuration-autoBind

false に設定すると、ウィジェットは初期化中にデータ ソースにバインドされません。この場合、データ ソースの変更イベントが発生すると、データ バインディングが発生します。デフォルトでは、ウィジェットは構成で指定されたデータ ソースにバインドされます。

dataSource.sort()を実行すると、変更イベントが発生し、dataSource で暗黙的に読み取りが行われます (そのため、2 番目のサーバー読み取りが必要です)。

したがって、必要な並べ替えオプションを使用して新しい dataSource を作成し、dataSource.read()を明示的に呼び出す必要があります。

例 (構成を繰り返さないようにデフォルト オプションを拡張できます):

var options = $.extend({}, dataSourceOptions);
options.sort = [
        {field: "field_1", dir: "asc"},
        {field: "field_2", dir: "asc"}
    ];
var dataSource = new kendo.data.DataSource(options);
grid.setDataSource(dataSource);
grid.dataSource.read();

この助けを願っています。よろしく!

于 2016-06-29T11:09:16.530 に答える
1

最初にデータを読み取る前に並べ替えを設定しますか? ui コントロールに autobind: false があることを確認してから、データソースに並べ替えプロパティを設定し、並べ替えられたデータを取得する準備ができたら datasource.read() を呼び出します。

于 2012-12-13T18:38:43.177 に答える