【问题标题】:How do I get current client sort and filter settings from a DevExpress MVCxGridView grid?如何从 DevExpress MVCxGridView 网格中获取当前客户端排序和筛选设置?
【发布时间】:2013-01-18 13:17:45
【问题描述】:

我有一个简单的 DevExpress ASP.MVC GridView,我想生成网格中数据的 PDF 导出。我已经弄清楚如何导出所有数据,但我希望能够只导出出现在网格中的数据。这将允许用户对数据进行排序和过滤,并且仅在导出中显示该数据。

排序和过滤似乎都发生在客户端,我搜索了 DevExpess 文档并检查了客户端网格对象,但找不到我需要的信息。我也尝试过处理网格的客户端事件。我在这里取得的唯一成功是处理了ColumnSorting 事件。使用它,我可以记录每个排序,但这并不能告诉我排序的方向,以及排序是仅应用于事件中提供的列还是作为多列排序的一部分应用于该列。

我剩下的唯一选择是使用网格外部的其他表单控件来控制排序和过滤。我真的不想这样做,因为我的客户非常热衷于内置的排序和过滤功能。

请有人告诉我如何捕获用户应用的当前排序和过滤设置,以便我可以将它们传递给将生成 PDF 的控制器操作?

【问题讨论】:

    标签: asp.net-mvc devexpress


    【解决方案1】:

    通过查看 DevExpress 示例之一中的一些代码,我发现了这一点:

    http://mvc.devexpress.com/GridView/Editing

    Grid 部分视图的代码如下:

    settings.ClientLayout = (s, e) =>
    {
        if(e.LayoutMode == ClientLayoutMode.Loading) {
            if(Session["GridState"] != null)
                e.LayoutData = (string)Session["GridState"];
        }
        else
            Session["GridState"] = e.LayoutData;
    };
    

    通过将LayoutData 存储在会话状态中,可以使用相同的代码将其应用于用于生成PDF 导出的GridViewSettings。这解决了我的问题,但我不确定这有多大用处,因为 LayoutData 必须被解析,因为它的格式类似于以下:

    page1|sort1|a0|filter[Title] Like '%Test%'|conditions1|1|3|visible9|t0|t1|t2|t3|t4|t5|t6|t7|t8|width9|e|e|e|e|e|e|e|e|e
    

    【讨论】:

      猜你喜欢
      • 2017-06-15
      • 2020-05-06
      • 2017-07-28
      • 2012-06-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-04
      相关资源
      最近更新 更多