Экспортируйте jqgrid отфильтрованные данные как Excel или CSV
Я в беде, пожалуйста, помогите мне. Я хочу показать кнопку "Экспортировать в Excel" в пейджере jqgrid, которая будет экспортировать текущий набор данных, которые извлекаются после поиска по критериям jqgrid (на основе текущего фильтра). Я использую параметр "loadonce:true" для своего jqgrid. Теперь я хочу экспортировать данные из локального источника данных jqgrid после поиска. Если это невозможно, то как я могу передавать параметры серверу, когда нажимаю на кнопку экспорта навигации, для которой необходимо выполнить критерии поиска. Я использую back-end как сервлет.
2 ответа
Я бы порекомендовал вам осуществить экспорт данных на сервер и просто опубликовать текущий поисковый фильтр в серверной части. Полная информация о параметрах поиска определяет postData
параметр jqGrid. Еще один логический параметр jqGrid search
определить, следует ли применять поисковый фильтр. Вы должны лучше игнорировать _search
собственностью postData
параметр и использование search
параметр jqGrid.
Формат информации о поисковом фильтре зависит от того, используется ли использование multipleSearch: true
вариант. Я лично использую это всегда. В случае если полная информация о фильтре будет размещена в одном свойстве postData
параметр: filters
имущество. Формат описан здесь. Код, который получает информацию, выглядит следующим образом
var $grid = $("#list"),
isFilterAreUsed = $grid.jqGrid('getGridParam', 'search'),
filters = $grid.jqGrid('getGridParam', 'postData').filters;
Если вы не используете multipleSearch: true
Если вы не сможете использовать сложные фильтры, информация о фильтре будет размещена в трех свойствах postData
параметр: searchField
, searchOper
а также searchString
,
Согласно ответу Олега можно использовать
код JavaScript:
$("#grid").jqGrid('navButtonAdd', '#grid_toppager', {
caption: "Excel",
buttonicon: "ui-icon-save",
onClickButton: function () {
document.forms['_export']._buffer.value = $("#grid").jqGrid('getGridParam', 'postData');
document.forms['_export'].submit();
}
});
index.aspx:
<form id='_export' method="post" action='<%= Url.Action( "Export", "Grid", new { _entity= Model.Name } ) %>'>
<input type="hidden" name="_buffer" id="_buffer" value="" />
</form>
контроллер:
public ActionResult Export(string _entity, string _sidx, string _sord, string filters ) {
string where = "";
if (!string.IsNullOrEmpty(filters))
{
var serializer = new JavaScriptSerializer();
Filters filtersList = serializer.Deserialize<Filters>(filters);
where = filtersList.FilterObjectSet(entity);
}
if (string.IsNullOrEmpty(where))
where = " TRUE ";
Response.ClearContent();
Response.AddHeader("content-disposition", "attachment; filename=MyExcelFile.xls");
Response.ContentType = "application/excel";
Response.Write(GetAllData(_entity, _sidx, _sord, where));
Response.End();
return View("Index");
}
Параметр filters в контроллере имеет нулевое значение. Не знаю, какой способ передачи фильтров и параметров сортировки в метод экспорта.