如何禁用jquery数据表上的拖放

时间:2016-12-18 20:21:47

标签: javascript jquery jquery-ui datatables datatables-1.10

所以我使用jquery数据表和colReorder来设置表。此表具有一些功能,例如如何单击列标题,以及选择要切换的列。为了使此功能正常工作,我必须启用colReorder。现在唯一的问题是,我的所有列都是可拖动的。我该如何解决这个问题?

这是我尝试过的事情

  • draggable设为false
  • bsort设为false
  • bsortable设为false

请让我知道我做错了什么。另外,这是我的构造函数:

        window.table =
        $table.DataTable({
            data: window.apiData['data'],
            /**
            dat
             * Specify which columns we're going to show
             */
            columns: window.columnMapping,
            /**
             * we want to disable showing page numbers, but still limit the number of results
             */
            dom: "t",
            /**
             * let's disable some dynamic custom css
             */
            asStripClasses: [],
            /**
             * let's keep the pages reasonable to prevent scrolling
             */
            pageLength: 8,

            /**
             * this helps with hotswapping columns
             */
            colReorder: true
        });

谢谢!

1 个答案:

答案 0 :(得分:2)

您可以将ColReorders事件绑定覆盖到<th>元素。幸运的是,事件充满了命名空间,因此很容易被追踪,事实证明ColReorder.mousedown负责触发列拖动。因此,您可以通过

重置功能
function resetColReorderMD() {
  $('.dataTable thead th').each(function() {
    var md = $._data($(this)[0]).events.mousedown;
    for (var i=0, l=md.length; i<l; i++) {
      if (md[i].namespace == 'ColReorder') {
        md[i].handler = function() {}
      }
    }  
  })
}

$('#example').DataTable({
  colReorder: true,
  initComplete: function() {
    resetColReorderMD()
  }
})  

演示 - &gt;的 http://jsfiddle.net/2y4w3v6g/

使用ColReorder插件时禁用列重新排序似乎没有意义。我猜所提到的“功能”正在大量使用ColReorder功能,这是真正的问题,上面应该被视为不可取的黑客。