首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >jqgrid,导出到asp.net-mvc站点中的excel (带有当前过滤器帖子数据)

jqgrid,导出到asp.net-mvc站点中的excel (带有当前过滤器帖子数据)
EN

Stack Overflow用户
提问于 2011-05-15 06:59:34
回答 3查看 7.7K关注 0票数 0

我有一个asp.net-mvc网页,我在前端使用jqgrid。我想有一个导出到excel按钮,将导出当前的数据集(基于当前过滤器)。

我已经使用了工具栏过滤器,所以我看到过滤器设置存储在post数据中,但是我不知道如何创建一个将所有过滤器设置/规则从jqgrid传递到服务器的方法。

我在googling上看到一堆jqgrid“导出到excel”的例子,但是similar to this example,它们似乎都没有将过滤器信息传递到服务器端。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-05-15 14:10:14

您可以将隐藏字段放入导出到Excel表单中:

代码语言:javascript
复制
@using (Html.BeginForm(new { action = "ExportToExcel" }))
{
    @Html.Hidden("sidx")
    @Html.Hidden("sord")
    @Html.Hidden("page")
    @Html.Hidden("rows")
    <table id="list"></table>
    <input type="submit" value="Export to Excel" />
}

并在表单提交时根据当前值填充它们:

代码语言:javascript
复制
$('form').submit(function () {
    var grid = $('#list');
    var sortname = grid.getGridParam('sortname');
    var sortorder = grid.getGridParam('sortorder');
    var page = grid.getGridParam('page');
    var rows = grid.getGridParam('rowNum');
    $('#sidx').val(sortname);
    $('#sord').val(sortorder);
    $('#page').val(page);
    $('#rows').val(rows);
});

这样,ExportToExcel控制器操作将采用这些参数,并能够过滤列表。

票数 3
EN

Stack Overflow用户

发布于 2011-06-16 05:37:15

我所做的是在每次请求数据时将网格状态放入缓存中,然后使用gridState导出到excel。在jqGrid站点上有一些这样的例子:

代码语言:javascript
复制
//this fragment in GetData method
Session["ExceptionGridState"] = gridModel.ExceptionGrid.GetState(true);

然后,当调用导出时:

代码语言:javascript
复制
public ActionResult ExportToExcel_CurrentData()
{
  var gridModel = new ExceptionJqGridModel();
  var grid = gridModel.ExceptionGrid;

  // call the ExportToExcel built-in method
  JQGridState gridState = Session["ExceptionGridState"] as JQGridState;
  gridState.CurrentPageOnly = false;
  grid.ExportToExcel(SourceQuery(),
        String.Format("SomeDatasetName_Filtered_{0:yyyymmddhhmm}.xls", 
            DateTime.Now), 
        gridState);

return View();

}

这对我很有效。

票数 1
EN

Stack Overflow用户

发布于 2012-02-20 22:24:59

我从上面的@simpatric greg解决方案中获得了灵感,成功地进行了过滤输出。

当请求数据时,我为每个网格参数设置一个会话变量,然后将它们再次传递给excel导出服务。Greg的解决方案可以与asp.net MVC一起工作,这对于主要问题来说是可以的。以下解决方案也可以与标准的纯js jqgrid一起使用:

控制器网格操作

代码语言:javascript
复制
        ...
      Session["jqsidx"] = sidx; 
      Session["jqsord"] = sord; 
      Session["jqpage"] = page; 
      Session["jqrows"] = rows; 
      Session["jq_search"] = _search; 
      Session["jqfilters"] = filters; 
      ....

在EXCEL导出操作^^内部召回的

代码语言:javascript
复制
 string sidx = Session["jqsidx"] as String;
 string sord = Session["jqsord"] as String;
 int? page = Session["jqpage"] as Nullable<Int32>;
 int? rows = Session["jqrows"] as Nullable<Int32>;
 bool? _search = Session["jq_search"] as Nullable<bool>;
 string filters = Session["jqfilters"] as String;

var query = myqueryservice.getGridData(sidx, sord, (int)page, (int)rows, (bool)_search, filters, urlparams).ToList();
...

我希望这能帮助其他有同样问题的人使用标准jqgrid。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6005312

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档