无法指定数据表 javascript 的默认列排序
Cannot specify a default column sort of datatables javascript
我需要在页面加载时按特定列进行排序,在这种情况下,让它在"RecordDate"上以降序排序显示初始结果。
问题是,我相信服务器端正在阻止任何排序规范,我在下面所做的任何修改都不会加载结果(asSort [[列数和尝试的名称,desc]]等)。
我可以编写一个特殊的函数来强制此列排序吗?很好奇在修改存储过程或其他 cs 文件之前是否可以在此处处理此问题。
function GetRecords( DTO ) {
var grpid = ApplyGroupingOnTable();
console.log( grpid );
oTable = $( "#SearchTable" ).dataTable( {
"oLanguage": {
"sZeroRecords": "No records to display"//,
//"sSearch": "Search on UserName"
},
"aLengthMenu": [[10, 25, 50, 100, 150, 250, 500], [10, 25, 50, 100, 150, 250, 500]],
"iDisplayLength": 10,
"sScrollX": "1300px",
"bSortClasses": false,
"bStateSave": false,
"bFilter": false,
"bLengthChange": true,
"bPaginate": true,
"bAutoWidth": false,
"bProcessing": false,
"bServerSide": true,
"bDestroy": true,
"sAjaxSource": "/Data/SearchRecords",
"aoColumns": [
{ "mData": "SelectID", "sClass": "alternatingCenterAlign", fnRender: CreateSelectCaseViewerButton, "bSortable": false, "bSearchable": false, "sWidth": "18px" },
{ "mData": "ViewID", "sClass": "alternatingCenterAlign", fnRender: CreateCaseViewerButton, "bSortable": false, "bSearchable": false, "sWidth": "18px" },
{ "mData": "TagID", "sClass": "alternatingCenterAlign", fnRender: CreateTagCaseButton, "bSortable": false, "bSearchable": false, "sWidth": "18px" },
{ "mData": "ID", "sClass": "alternating", "sType": "string", "bSortable": true, "bSearchable": false, "sWidth": "50px" },
{ "mData": "ClientName", "sClass": "alternating", "sType": "string", "bSortable": true, "sWidth": "120px" },
{ "mData": "RecordDate", "sClass": "alternating", "sType": "string", "bSortable": true, "bSearchable": false, "sWidth": "70px" },
"bJQueryUI": false,
"sPaginationType": "full_numbers",
"bDeferRender": true,
"bRetrieve": false,
"fnServerParams": function ( aoData ) {
aoData.push( { "name": "iParticipant", "value": $( "#participant" ).val() } );
aoData.push( { "name": "iSearch", "value": JSON.stringify( DTO ) } );
aoData.push( { "name": "iId", "value": cliid } );
aoData.push( { "name": "iOrder", "value": grpid } );
},
"fnDrawCallback": function ( oSettings ) {
if ( grpid ) FinalGrouping( oSettings, grpid );
$( ".overflow" ).each( function () { $( this ).attr( 'title', $( this ).text() ); } );
$( '#tablediv select' ).chosen();
},
"fnServerData": function ( sSource, aoData, fnCallback ) {
$( '.grid-loading' ).show();
$.ajax( {
dataType: 'json',
contentType: "application/json; charset=utf-8",
type: "GET",
url: sSource,
data: aoData,
cache: false,
success: function ( msg ) {
if ( msg.Exception != undefined ) {
alert( msg.Exception );
$( '.grid-loading' ).hide();
return false;
}
lastId = ( msg.aaData.length > 0 ) ? msg.aaData[msg.aaData.length - 1][0] : 0;
fnCallback( msg );
$( '.grid-loading' ).hide();
}
} ); //End Ajax Call
}
} );
}
假设您有权访问 dataTable 的数据数组,其形式为:
var array = [
{ name: "somename", value: "somevalue" },
{ name: "somename2", value: "somevalue2" }
];
您可以使用以下内容根据值执行简单的降序排序:
array.sort(SimpleCompareDescOnValue);
给定函数:
function SimpleCompareDescOnValue(a, b) {
// Use caution so as not to define 'undefined'. It's not a great practice but it works.
var c = a.length != undefined ? Math.max.apply(Math, a.map(function (o) { return o.value; })) : a.value;
var d = b.length != undefined ? Math.max.apply(Math, b.map(function (o) { return o.value; })) : b.value;
if (c > d)
return -1;
if (c < d)
return 1;
return 0;
}
不确定这是否对您有所帮助。 我从未使用过 dataTable 库(尽管它看起来很酷),但我必须假设您可以在从服务器中提取数据后访问数据,并且只有将其存储在某个级别的数组中才有意义。
相关文章:
- 酒窝 JS 多个 y 轴 - 更改默认排序
- knockout.js、knockout可排序和默认文本
- DataTables设置默认排序列并设置无法排序的列
- 防止谷歌图表表中的默认排序事件
- 使用 Greasemonkey 修改 Craigslist 的默认搜索结果排序
- 2D 数组的默认排序是什么
- 在第一个由 angularjs 选择中排序默认选项
- 表排序器寻呼机插件 - 默认显示所有条目
- Extjs 3.4 Tree Grid默认按指定列排序
- 如何设置角度智能表的默认排序顺序
- 我可以禁用jquery$.post的默认排序吗
- 使用Jquery Tablesorter,了解如何使其中一列成为加载页面时进行排序的默认列
- 如何使默认<选项>在Javascript中,同时按顺序排序
- 动态地选择ReactJS作为组件,作为默认的排序
- 如何设置低到高在表排序为默认值
- Angular在object中的默认排序
- 当源数据是对象数组时,数据表中的默认排序
- 如何在AngularJS中指定默认排序顺序
- 指定网格中的默认排序
- 在jQuery中为特定ID或整个项目设置“无默认排序”(“aaSorting”:[])