0

koGrid 2.1.1の一部として、デフォルトの並べ替えを機能させることができませんでした。つまり、グリッドを特定の列/方向で並べ替えたい場合、期待どおりの動作が得られません。koGrid のデフォルトの並べ替えは、最初に gridOptions を構成するときに sortInfo によって実現されます。

この問題を示すjsFiddleを使用して例を作成しました。sortInfoを指定したにもかかわらず、リストが名前でソートされていないことがわかります。

1. ソート情報で koGrid を初期化:

        this.gridOptions = {
            data: self.myData,
            ...
            sortInfo: ko.observable({
                column: { "field": "name" },
                "direction": "asc" 
            })
            ...
        };

2. リストがソートされておらず、矢印も表示されていないことに注意してください。

ここに画像の説明を入力

4

2 に答える 2

2

指定されている場合、sortInfo を使用するように koGrid 2.2.1 デバッグ js を変更しました。基本的に、次の 2 つの変更を行いました。

1. フィールドごとに列を Grid オブジェクトに返す関数を作成しました。

window.kg.Grid = function (options) {
...
self.columnByField = function (field) {
        if(field) {
           var column;
           $.each(self.columns(), function (i, c) {
              if(field == c.field) {
                 column = c;
                 return false;
              }
           });
           return column;
        }
    }
...
}

2. Grid オブジェクトの init メソッドを変更して、sortInfo を探して列をソートするようにしました。

window.kg.Grid = function (options) {
...
self.init = function () {
  ...
   self.buildColumns();
   var sortingProperties = self.sortInfo.peek();
   if(sortingProperties) {
      var col = self.columnByField(sortingProperties.column.field);
      if(col) {
         col.sortDirection(sortingProperties.direction === ASC ? DESC : ASC);
         col.sort();
      }

   }
  ...
}
...
}

これにより、デフォルトのソートの問題が解決されます。GitHubでfork プロジェクトを作成し、そこに新しいデバッグ js ファイルを追加しました。

グリッドを初めてロードすると、下の画像に示すように並べ替えが機能します。

ここに画像の説明を入力

于 2013-07-19T19:22:42.893 に答える
0

以下のような gridOption sortInfo の関数を追加します

 ....
    sortInfo: this.sortDetails;
  }

以下のように関数 sortDetail を定義します

this.sortDetails.subscribe(function (data) {
        this.sortData.sort(function (left, right) {
            return left == right ? 0 : (left < right ? -1 : 1);
        });
    });
于 2015-07-09T08:44:05.560 に答える