Экспортируйте jqgrid отфильтрованные данные как Excel или CSV - PullRequest
2 голосов
/ 22 ноября 2011

У меня проблемы, пожалуйста, помогите мне. Я хочу показать кнопку «Экспортировать в Excel» в пейджере jqgrid, которая будет экспортировать текущий набор данных, который извлекается после поиска по критериям jqgrid (на основе текущего фильтра ). Я использую параметр «loadonce: true» для своего jqgrid. Теперь я хочу экспортировать данные из локального источника данных jqgrid после поиска. Если это невозможно, то как я могу передавать параметры серверу, когда нажимаю на кнопку экспорта навигации, для которой необходимо выполнить критерии поиска. Я использую back-end в качестве сервлета.

Ответы [ 2 ]

3 голосов
/ 22 ноября 2011

Я бы порекомендовал вам осуществить экспорт данных на сервер и просто опубликовать текущий поисковый фильтр в серверной части.Полная информация о параметре поиска определяет 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.

0 голосов
/ 23 ноября 2011

Согласно ответу Олега можно использовать

код 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");
}

параметр фильтра в контроллере имеет нулевое значение. Не знаю, какой способ передачи фильтров и параметров сортировки в метод экспорта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...