2016-07-08 111 views
0

我有一个可排序的dataTable填充数据,您可以在点击它时编辑数据。当点击dataTables暂时禁用排序

<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

对于数据表,您需要提及某个特定列是否应该排序。如果您不想排序任何列,您可以将所有列设置为false。属性名称是“aoColumns”。 –

+0

是的,但我想能够对它们进行排序,而不是当用户单击以编辑一行时。 – user3592255

+0

由于您将不得不重新初始化数据表,因此很难更改对数据表的行为进行排序。建议不要进行内联编辑并将用户重定向到不同的页面,或者如果使用引导,则使用引导模式来编辑该行。 –

回答

0

好,我管理这个使用一个小窍门

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

使用类型来解决:HTML消除一切“<”之间和“>”然而,这给我留下的DataTable试图自

空单元格进行排序
<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元素将不会被看到,但数据表可以看到它并将其用于排序,因此行不会改变位置!此解决方案甚至比禁用排序更好,因为您现在仍然可以对表进行排序