9

拖放列重新排序是一项很棒的功能,但是如何防止用户移动特定(非数据)列?

例如,我将复选框选择器用于我的多选网格,但该列应始终锁定在左侧,而其他列可以自由重新排序。

4

2 回答 2

2

我试过这个:

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();
    }
});

这很好。

于 2014-01-17T13:24:35.083 回答
2

我查看了 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。有点破解,但它的工作。

于 2011-12-19T03:06:46.653 回答