防止某些SlickGrid列被重新排序

时间:2011-07-01 15:28:39

标签: slickgrid tablecolumn

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

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

2 个答案:

答案 0 :(得分: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。有点黑客,但它有效。

答案 1 :(得分: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();
    }
});

这很好。