2011-07-25 5 views
3

私はSlickgridのjavasriptライブラリを使用しています動作しない並べ替え、と私は、次のオプションで私のグリッドを初期化していますSlickgrid列が正しく

var options = 
{ 
    enableCellNavigation: true, 
    enableColumnReorder: true, 
    syncColumnCellResize: false, 
    asyncEditorLoading: true 
}; 

私は実装私slickgridの残りの部分を持っている、そしてそれは素晴らしい取り組んでいます。私が経験した唯一の問題は、列の並び替えがうまくいかないことです。

私は列ヘッダーを別の位置にドラッグできますが、ドロップしたい場所にカーソルを移動すると、他の列ヘッダーは前の例のように移動しません。私は通常、スペースが開かれるまで列見出しをつぶす必要があります。

並べ替えることができない列ヘッダーについてのドキュメントはありませんでしたので、どこで問題が発生しているのかわかりません。

誰かがSlickgridでこれらのような似たような問題を抱えているのですか、それとも何か提案がありますか?

答えて

3

最近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); 

この変更を行った後は、他のすべてが期待通りに機能しました。

これは私が理解するのに少し時間がかかりましたが、あなたや他の人が同様の問題に遭遇した場合に役立つことを願っています。

+0

ありがとうございます!私も同じ問題がありました。それはそれを修正する。素晴らしい答え。 – Chris