我正在尝试从jqGrid(免费版和最新版本)获取数据,并且假设我得到:
我就是这样做的:
$(function () {
var $order_logs = $('#order_logs');
$order_logs.jqGrid({
url: Routing.generate('api_order_logs'),
datatype: "json",
colModel: $colmodel.data('values'),
width: 980,
height: 300,
pager: true,
toppager: true,
hoverrows: true,
shrinkToFit: true,
autowidth: true,
rownumbers: true,
viewrecords: true,
rowList: [25, 50, 100],
rownumWidth: 60,
gridview: true,
sortable: {
options: {
items: ">th:not(:has(#jqgh_order_logs_cb,#jqgh_order_logs_rn,#jqgh_order_logs_actions),:hidden)"
}
},
jsonReader: {
root: 'rows',
page: 'page',
total: 'total',
records: 'records',
cell: '',
repeatitems: false
},
cmTemplate: {autoResizable: true, editable: true},
autoResizing: {compact: true, resetWidthOrg: true},
autoresizeOnLoad: true
}).jqGrid('navGrid', {
edit: false,
add: false,
del: false,
search: false,
refresh: true,
refreshstate: "current",
cloneToTop: true
}).jqGrid('navButtonAdd', {
caption: 'Export',
title: 'Export',
onClickButton: function () {
var filteredData = $order_logs.jqGrid("getGridParam").lastSelectedData,
allData = $order_logs.jqGrid('getGridParam', 'data');
exportData(filteredData, allData);
}
});
});
function exportData(filteredData, allData) {
if (filteredData.length === 0 || allData.length === 0) {
alert('There is no data to export');
return;
}
// Export only the filtered data
if (filteredData.length > 0) {
return;
}
// Export all the grid data
}
由于某种原因,allData
的值总是一个空数组,我不确定,因为我使用相同的代码,因为每个人都在那里使用,并在SO中找到了很多答案。
更新:
目前,网格包含六列和一组60条记录,每次分页为20,但您可以将分页更改为50或100。
能告诉我为什么会这样吗?
答案 0 :(得分:0)
我建议在小型数据集的情况下使用loadonce: true, forceClientSorting: true
选项:少于1000行或10000行。它简化了代码服务器端,您可以使用免费jqGrid的全部功能。访问lastSelectedData
和data
的问题将得到解决。
然后,您可以轻松使用许多高级功能,例如createColumnIndex: true
,generateValue: true
个generateDatalist: true
选项等。请参阅版本4.14.1的README中包含的演示。在我的选择中,良好和舒适的数据过滤是显示数据的部分。在本地拥有数据可以在过滤器栏中找到唯一值并构建<select>
,或使用<datalist>
来获得自动完成功能。