最近SlickGridを使い始めたばかりで、同様の問題が発生しました。
私はこの方法でそれをやっていた:
var options = { ... };
var dataView = ...;
// initialize columns with empty array
var columns = [];
// intialize myGrid with the empty columns
var myGrid = new Slick.Grid(
"#myGrid", dataView,
columns, options);
// initialize columns here (e.g. after loading dynamic column header data)
columns.push(
{id:"sel", name:"#", field:"num", sortable: true},
{id:"title", name:"Title", field:"title", sortable: true},
{id:"duration", name:"Duration", field:"duration", sortable: true});
// update the columns
myGrid.setColumns(columns);
私はそのようにそれをやっていた理由を尋ねるかもしれません。さて、私は動的コンテンツからいくつかの列ヘッダーを持っていて、行データの読み込みと同じ方法でコンテンツの読み込みを維持しようとしていました。いずれにしても、あなたが記述した変な列の並べ替えの動作を除いて、上記の方法で他のすべてのもの(イベントハンドラ、行の更新など)がうまくいくように見えました。
多くの試行錯誤の末、私のコードと提供された例を比較した結果、私の間違いは初期化中に列を適切に設定しなかったことになります。どうやら、空の列配列で新しいSlick.Gridを呼び出すと、奇妙な動作が発生します。
私が修正したのは、ダミーの空ではない列配列でグリッドを初期化し、その後実際の列を設定するためにsetColumnsを呼び出すことでした。例えば
// intialize myGrid with dummy column array
var myGrid = new Slick.Grid(
"#myGrid", dataView,
[{id: "dummy"}], options);
この変更を行った後は、他のすべてが期待通りに機能しました。
これは私が理解するのに少し時間がかかりましたが、あなたや他の人が同様の問題に遭遇した場合に役立つことを願っています。
ありがとうございます!私も同じ問題がありました。それはそれを修正する。素晴らしい答え。 – Chris