繁体   English   中英

dataTables暂时禁用排序

[英]dataTables temporarily disable sorting

我有一个可填充数据的可排序数据表,单击该数据表即可在其中编辑数据。

单击之前看起来像这样:

<input type='text' value='...' size=3 disabled>

当点击:

$('#table1 tbody').on( 'click', 'tr', function () 
{
    var olddata = "";
    olddata = table.cell( this, 3 ).data();
    table.cell( this, 3 ).data( "<input type='text' value='" + olddata + "' size=3 style='background-color:white'>" );
});

但是,当您单击一行时,它会更改位置,因为它现在还包含额外的html代码,并且如果这是活动的订购列,则它会位于底部或顶部。

我排序使用:

var columnSet = 
[
    ...
    {title: "Mycolumn", width:"1%", "type": "string"},
    ...
];

所以我的问题是,是否可以在单击一行时临时禁用整个表中的排序,然后在完成编辑后再次启用,还是可以基于value属性进行排序?

好吧,我设法用一个小技巧解决了这个问题

var columnSet = 
[
    ...
    {title: "Mycolumn", width:"1%", "type": "html"},
    ...
];

使用类型:html删除“ <”和“>”之间的所有内容,但是这给我留下了试图对空单元格进行排序的dataTables,因为

<input value="...">

仅包含“ <”和“>”之间的内容

我用以下方法解决了这个问题:

olddata = $(table.cell( row, 5 ).data()).attr("value");
table.cell( row, 5 ).data( "<input type='text' value='" + olddata + "' size=25 style='background-color:white'><p hidden>" + olddata + "</p>" );

p元素将不可见,但datatable可以看到它并将其用于排序,因此该行不会改变位置! 此解决方案比禁用排序甚至更好,因为您现在仍然可以对表格进行排序

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM