我有一个asp.net-mvc网页,我在前端使用jqgrid。我想有一个导出到excel按钮,将导出当前的数据集(基于当前过滤器)。
我已经使用了工具栏过滤器,所以我看到过滤器设置存储在post数据中,但是我不知道如何创建一个将所有过滤器设置/规则从jqgrid传递到服务器的方法。
我在googling上看到一堆jqgrid“导出到excel”的例子,但是similar to this example,它们似乎都没有将过滤器信息传递到服务器端。
发布于 2011-05-15 14:10:14
您可以将隐藏字段放入导出到Excel表单中:
@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" />
}并在表单提交时根据当前值填充它们:
$('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控制器操作将采用这些参数,并能够过滤列表。
发布于 2011-06-16 05:37:15
我所做的是在每次请求数据时将网格状态放入缓存中,然后使用gridState导出到excel。在jqGrid站点上有一些这样的例子:
//this fragment in GetData method
Session["ExceptionGridState"] = gridModel.ExceptionGrid.GetState(true);然后,当调用导出时:
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();}
这对我很有效。
发布于 2012-02-20 22:24:59
我从上面的@simpatric greg解决方案中获得了灵感,成功地进行了过滤输出。
当请求数据时,我为每个网格参数设置一个会话变量,然后将它们再次传递给excel导出服务。Greg的解决方案可以与asp.net MVC一起工作,这对于主要问题来说是可以的。以下解决方案也可以与标准的纯js jqgrid一起使用:
控制器网格操作
...
Session["jqsidx"] = sidx;
Session["jqsord"] = sord;
Session["jqpage"] = page;
Session["jqrows"] = rows;
Session["jq_search"] = _search;
Session["jqfilters"] = filters;
....在EXCEL导出操作^^内部召回的
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。
https://stackoverflow.com/questions/6005312
复制相似问题