我有一个关于在free 4.15.4中导出Excel的问题.我想知道如何在业务逻辑方法中使用这个结果集{"groupOp":"AND","rules":[{"field":"FirstName","op":"eq","data":"Amit"}]}
。
为了得到更多的澄清,我使用了OfficeOpenXml,如果我不使用过滤的结果集(前面提到的),它可以很好地工作,并且我可以在excel表中下载完整记录的文件。但是我不知道该做什么或者如何利用结果集{"groupOp":"AND","rules":[{"field":"FirstName","op":"eq","data":"Amit"}]}
如果需要,我可以分享我的控制器和BL代码。
我添加了一个小提琴,它显示了在jqGrid寻呼机中Export按钮的实现。
在来到这里之前,我阅读并试图从以下问题中理解:
1] jqgrid,导出到asp.net-mvc站点中的excel (带有当前筛选器的post数据)。
以下是代码:
$(function () {
"use strict";
var mydata = [
{ id: "10", FirstName: "test", LastName: "TNT", Gender: "Male" },
{ id: "11", FirstName: "test2", LastName: "ADXC", Gender: "Male" },
{ id: "12", FirstName: "test3", LastName: "SDR", Gender: "Female" },
{ id: "13", FirstName: "test4", LastName: "234", Gender: "Male" },
{ id: "14", FirstName: "test5", LastName: "DAS", Gender: "Male" },
];
$("#list").jqGrid({
data: mydata,
colNames: ['Id', 'First Name', 'Last Name', 'Gender'],
colModel: [
{
label: "Id",
name: 'Id',
hidden: true,
search: false,
},
{
label: "FirstName",
name: 'FirstName',
searchoptions: {
searchOperators: true,
sopt: ['eq', 'ne', 'lt', 'le','ni', 'ew', 'en', 'cn', 'nc'],
}, search: true,
},
{
label: "LastName",
name: 'LastName',
searchoptions: {
searchOperators: true,
sopt: ['eq', 'ne', 'lt', 'ni', 'ew', 'en', 'cn', 'nc'],
}, search: true,
},
{
label: "Gender",
name: 'Gender',
search: true, edittype: 'select', editoptions: { value: 'Male:Male;Female:Female' }, stype: 'select',
},
],
onSelectRow: function (id) {
if (id && id !== lastsel) {
jQuery('#list').restoreRow(lastsel);
jQuery('#list').editRow(id, true);
lastsel = id;
}
},
loadComplete: function (id) {
if ($('#list').getGridParam('records') === 0) {
//$('#grid tbody').html("<div style='padding:6px;background:#D8D8D8;'>No records found</div>");
}
else {
var lastsel = 0;
if (id && id !== lastsel) {
jQuery('#list').restoreRow(lastsel);
jQuery('#list').editRow(id, true);
lastsel = id;
}
}
},
loadonce: true,
viewrecords: true,
gridview: true,
width: 'auto',
height: '150px',
emptyrecords: "No records to display",
iconSet:'fontAwesome',
pager: true,
jsonReader:
{
root: "rows",
page: "page",
total: "total",
records: "records",
repeatitems: false,
Id: "Id"
},
});
jQuery("#list").jqGrid("navButtonAdd", {
caption: "",
buttonicon: "fa-table",
title: "Export To Excel",
onClickButton: function (e) {
var projectId = null;
var isFilterAreUsed = $('#grid').jqGrid('getGridParam', 'search'),
filters = $('#grid').jqGrid('getGridParam', 'postData').filters;
var Urls = "/UsersView/ExportToExcel_xlsxFormat?filters="+ encodeURIComponent(filters); //' + encodeURIComponent(filters);/
if (totalRecordsCount > 0) {
$.ajax({
url: Urls,
type: "POST",
//contentType: "application/json; charset=utf-8",
data: { "searchcriteria": filters, "projectId": projectId, "PageName": "MajorsView" },
//datatype: "json",
success: function (data) {
if (true) {
window.location = '/UsersView/SentFiletoClientMachine?file=' + data.filename;
}
else {
$("#resultDiv").html(data.errorMessage);
$("#resultDiv").addClass("text-danger");
}
},
error: function (ex) {
common.handleAjaxError(ex.status);
}
});
}
else {
bootbox.alert("There are no rows to export in the Participant List")
if (dialog) {
dialog.modal('hide');
}
}
}
});
});
发布于 2018-09-24 10:06:38
解决这个问题有很多种选择。最简单的方法是向服务器发送过滤行的ids,而不是发送filters
参数。空闲jqGrid支持lastSelectedData
参数,因此您可以使用$('#grid').jqGrid('getGridParam', 'lastSelectedData')
获取具有排序和筛选项的数组,这些项对应于当前的筛选和排序条件。返回数组的每个项都应该包含Id
属性(或id
属性),您可以在服务器端使用该属性在导出之前对数据进行筛选。
第二个选项是基于当前发送到服务器的filters
参数实现服务器端过滤。旧的答案 (参见FilterObjectSet
)提供了一个在使用实体框架的情况下进行过滤的示例。顺便说一下,答案和另一个包含代码,我使用Open将网格数据导出到Excel。您可以将其与现有代码进行比较。
在某些情况下,在不编写任何服务器代码的情况下将网格数据导出到Excel可能很有趣。相应的演示可以在问题所在和更新的部分答案中找到。
https://stackoverflow.com/questions/52480594
复制相似问题