2016-07-08 96 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元素將不會被看到,但數據表可以看到它並將其用於排序,因此行不會改變位置!此解決方案甚至比禁用排序更好,因爲您現在仍然可以對錶進行排序