我有一个可填写数据的可排序dataTable,您可以在单击时编辑数据。
点击前看起来像这样:
<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"},
...
];
所以我的问题是,是否可以在单击一行时暂时禁用整个表中的排序,然后在完成编辑后再次启用,或者根据值属性进行排序?
答案 0 :(得分:0)
好的,我设法用一个小技巧来解决这个问题
var columnSet =
[
...
{title: "Mycolumn", width:"1%", "type": "html"},
...
];
使用type:html删除“&lt;”之间的所有内容和“&gt;”然而,这让我的dataTables试图对空单元格进行排序,因为
<input value="...">
只有“&lt;”之间的内容和“&gt;”
我用以下方法解决了这个问题:
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元素将不会被看到但数据表可以看到并使用它进行排序,因此行不会改变位置!这个解决方案甚至比禁用排序更好,因为您现在仍然可以对表进行排序