这是一个奇怪的人。我正在使用带有jQuery 3.3.1和Bootstrap 3.3.7的数据表v1.10.19 []
我的数据表网格被配置为显示1000条记录(但是您可以将其更改为2500、5000和“全部”)。我的数据库中只有大约60条记录。
它正在使用服务器端处理来检索数据。
当网格加载时,寻呼机显示5个按钮和一个椭圆(好像还有更多)。
甚至更奇怪,如果我将下拉列表更改为显示“所有”记录,它的作用与我期望的一样,即寻呼机具有1个页面按钮。
有效载荷几乎相同:
{ "data": { "draw": 8, "recordsTotal": 86, "recordsFiltered": 66, "data": [rows of data here] }, "outcome": { "opResult": "Success", "message": "" } }
当您单击第2页时,它确实成功检索到0行的有效负载。但寻呼机上不应有第2页可用。
数据表的配置对象看起来像这样:
eventsSvr.buildConfig = function (url) { return { "processing": true, "serverSide": true, //"paging": true, "ajax": { url: url, type: ajax.requestPOST, dataSrc: 'data.data' // the path in the JSON structure to the array which will be the rows. }, "order": [[1, "asc"]], "lengthMenu": [[1000, 2500, 5000, -1], [1000, 2500, 5000, "All"]], "initComplete": function (settings, json) { eventsSvr.searchTextSpan.text('Search').removeClass('search-is-on'); }, "columns": eventsSvr.grid.columns, "columnDefs": eventsSvr.grid.columnDefs, dom: 'ltp' };
我在页面上确实有很多自定义搜索,所以我不得不写很多这样的代码:
$.fn.dataTable.ext.search.push( function (settings, data, dataIndex) { var picker3 = $(eventsSvr.datePickerInputs[0]).data(icapp.kendoKey); var picker4 = $(eventsSvr.datePickerInputs[1]).data(icapp.kendoKey); var rowStartDate = moment(data[3], icapp.date.momentParseFormat).toDate(); var rowEndDate = moment(data[4], icapp.date.momentParseFormat).toDate(); ... etc. } );
但是奇怪的是,“全部”记录与1000条记录之间的行为不同。如上所述,选择“全部”记录有效(仅产生一个页面按钮),但是其他所有页面大小均不起作用(即1000、2500、5000)。确实返回了1页的数据,但我得到了5页按钮和一个省略号。
任何想法为什么会这样?
这是一个奇怪的人。我在jQuery 3.3.1和Bootstrap 3.3.7中使用了数据表v1.10.19,我的数据表网格配置为显示1000条记录(但您可以将其更改为2500、5000和“全部”)。我是...
[使用服务器端处理模式时,DataTables期望draw
,recordsTotal
和recordsFiltered
是根级元素。考虑将您的回复更改为以下内容,您可以删除dataSrc
选项。