我在我的网页中使用 DataTables,它从服务器服务器端处理加载内容,并且我想向它添加 rowReordering jquery-datatables-row-reordering功能。这就是我之前尝试过的方式。
$('.data_table').dataTable( {
"sPaginationType": "bootstrap",
"oLanguage": {
"sLengthMenu": "Display <select>'+'<option value=\"10\">10</option>'+'<option value=\"20\">20</option>'+'<option value=\"30\">30</option>'+'<option value=\"40\">40</option>'+'<option value=\"50\">50</option>'+'<option value=\"-1\">All</option>'+'</select> records"
},
"processing": true,
"serverSide": true,
"ajax": dataUrl
} ).rowReordering({
sURL:sortUrl, // Let the server page know if order is changed
sRequestType: "GET",
fnAlert: function(message) {
modalError("Server Error",message,null); // Error message if an server error occured during the process
}
});
$.extend( $.fn.dataTableExt.oStdClasses, {
"sWrapper": "dataTables_wrapper form-inline"
} );
这实际上启用了数据的拖放,但是在这样做之后它不会发送任何服务器通知,也不会被丢弃的行停留在它被丢弃的位置(它会回到它之前的位置)。
我也尝试过以下操作。
$table = $('.data_table').dataTable( {
"sPaginationType": "bootstrap",
"oLanguage": {
"sLengthMenu": "Display <select>'+'<option value=\"10\">10</option>'+'<option value=\"20\">20</option>'+'<option value=\"30\">30</option>'+'<option value=\"40\">40</option>'+'<option value=\"50\">50</option>'+'<option value=\"-1\">All</option>'+'</select> records"
},
"processing": true,
"serverSide": true,
"ajax": dataUrl,
"fnInitComplete": function(oSettings, json) {
$table.rowReordering({
sURL:sortUrl, // Let the server page know if order is changed
sRequestType: "GET",
fnAlert: function(message) {
modalError("Server Error",message,null); // Error message if an server error occurred during the process
}
});
}
} );
$.extend( $.fn.dataTableExt.oStdClasses, {
"sWrapper": "dataTables_wrapper form-inline"
} );
在此,我在回调rowRedordering
内部fnInitComplete
调用。但这给出了与前一个相同的结果。就像它进行拖放一样,但它不会发送服务器通知(而且该行也不会保留在它被放置的位置。它会回到它之前的位置)。
在我添加服务器端处理的数据来初始化表之前,重新排序工作得很好。那么,我在这里做错了什么?