将jqgrid过滤后的数据导出为ex​​cel或CSV

时间:2011-11-22 13:50:26

标签: servlets jqgrid

我遇到麻烦请帮帮我。我想在jqgrid的pager中显示“export to excel”按钮,这将导出搜索jqgrid标准后检索的当前数据集(基于当前过滤器) )。我正在为我的jqgrid使用“loadonce:true”设置。我想在搜索后从jqgrid的本地数据源导出数据。如果不可能,那么当我点击导航的导出按钮时,我怎么能够将参数传递给服务器,搜索条件需要这样做。我使用后端作为servlet。

2 个答案:

答案 0 :(得分:3)

我建议您在服务器上实现数据导出,并将当前搜索过滤器发布到后端。有关搜索参数的完整信息定义了jqGrid的postData参数。 jqGrid search的另一个布尔参数定义是否应该应用搜索过滤器。您最好忽略_search参数的postData属性,并使用jqGrid的search参数。

有关搜索过滤器的信息格式取决于是否使用了multipleSearch: true选项。我个人经常使用它。在这种情况下,有关过滤器的完整信息将放在postData参数:filters属性的一个属性中。格式描述为here。获取信息的代码如下所示

var $grid = $("#list"),
    isFilterAreUsed = $grid.jqGrid('getGridParam', 'search'),
    filters = $grid.jqGrid('getGridParam', 'postData').filters;

如果您不使用multipleSearch: true选项,则无法使用复杂的过滤器,有关过滤器的信息将放在postData参数的三个属性中:searchFieldsearchOpersearchString

答案 1 :(得分:0)

根据Oleg的回答,可以使用

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");
}
控制器中的

过滤器参数具有空值。不知道哪种方法可以将过滤器和排序参数传递给Export方法。