[英]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.