ドラッグ アンド ドロップによる列の並べ替えは優れた機能ですが、ユーザーが特定の (データ以外の) 列を移動できないようにするにはどうすればよいですか?
たとえば、複数選択グリッドにチェックボックス セレクターを使用していますが、この列は常に左側にロックする必要があり、他の列は自由に並べ替えることができます。
ドラッグ アンド ドロップによる列の並べ替えは優れた機能ですが、ユーザーが特定の (データ以外の) 列を移動できないようにするにはどうすればよいですか?
たとえば、複数選択グリッドにチェックボックス セレクターを使用していますが、この列は常に左側にロックする必要があり、他の列は自由に並べ替えることができます。
私はこれを試しました:
function setupColumnReorder() {
var checkBoxColumn = $headers.children([0]).attr('id');
$headers.sortable({
items: "div:not('.slick-resizable-handle','#"+checkBoxColumn+"')",
...
しかし、その前に他の列をドラッグすると問題が発生しました。それから私はこれを試しました:
grid.onColumnsReordered.subscribe(function (e, args) {
if (myGridColumns[0].id != grid.getColumns()[0].id)
{
grid.setColumns(myGridColumns);
}
else
{
myGridColumns= grid.getColumns();
}
});
そしてそれはちょうど良かったです。
jQuery UI でソート可能なデモを見て、slick.grid.js の setupColumnReorder 関数を変更して特定の項目を除外しました。チェックボックス列を除外することで、他の列をその前にドラッグしても、並べ替えを防ぐことができました。
function setupColumnReorder() {
var checkBoxColumn = $headers.children([0]).attr('id');
$headers.sortable({
items: "div:not('.slick-resizable-handle','#"+checkBoxColumn+"')",
...
私のチェックボックス列は常に最初にあるので、そのようにIDを取得します. ちょっとしたハックですが、うまくいきました。