【问题标题】:MVCjqDrid store GridSettings in sessionMVCjqDrid 在会话中存储 GridSettings
【发布时间】:2013-05-07 06:31:54
【问题描述】:

我有一个 mvcjqgrid:

@(Html.Grid("dataGrid")
          .SetJsonReader(new MvcJqGrid.DataReaders.JsonReader { Id = "Id", RepeatItems = false })
          .SetRequestType(RequestType.Post)
          .AddColumn(new Column("Name").SetLabel("Name").SetSearch(true))
          .AddColumn(new Column("Email").SetLabel("E-Mail").SetSearch(true).SetFormatter(Formatters.Email))
          .AddColumn(new Column("Phone").SetLabel("Phone").SetSearch(true))
          .SetSearchToolbar(true)
          .SetUrl(Url.Action("GetData", "Controller"))
          .SetSearchOnEnter(false)
          .SetRowNum(10)
          .SetRowList(new[] { 10, 15, 20, 50 })
          .SetViewRecords(true)
          .SetPager("pager"))

和控制器:

    public ActionResult GetData()
    {
        return View(new myEntity[0]);
    }

    [HttpPost]
    public JsonResult GetData(GridSettings gridSettings)
    {
        int totalRecords = DataHelper.GetCount();
        var data = DataHelper.GetData(gridSettings);
        var jsonData = new
        {
            total = totalRecords / gridSettings.PageSize + 1,
            page = gridSettings.PageIndex,
            records = totalRecords,
            rows = data
        };
        return Json(jsonData);
    }

编辑:
所以我的问题是如何以正确的方式将 GridSettings 存储在会话中,我需要每次用户返回此页面时,页面应该与他离开时的页面相同?
如果我这样做:

Session["settings"] = gridSettings;

我需要一些方法来比较存储的 gridSettings 和传递给 action 的那个。

【问题讨论】:

  • @DGibbs 是的,但我如何与 jqGrid 传递给行动的那个进行比较?
  • @DGibbs 问题已编辑

标签: c# asp.net-mvc session mvcjqgrid


【解决方案1】:

在这种情况下,为什么不使用Http Cache?我们可以编写一个缓存提供程序,而 Http Cache 就是它的一种实现方式。因此,将来您可以为其扩展更多提供程序。

【讨论】:

  • 根本不是答案,我的 jqgrid 调用 public JsonResult GetData(GridSettings gridSettings) 并传递 gridSettings,另一个我在会话中,所以我怎么知道哪个是正确的?
【解决方案2】:

答案是重新创建网格:

@{
     var setting = Session["settings"] as GridSettings;
}
@(Html.Grid("dataGrid")
          .SetJsonReader(new MvcJqGrid.DataReaders.JsonReader { Id = "Id", RepeatItems = false })
          .SetRequestType(RequestType.Post)
          .AddColumn(new Column("Name").SetLabel("Name").SetSearch(true))
          .AddColumn(new Column("Email").SetLabel("E-Mail").SetSearch(true).SetFormatter(Formatters.Email))
          .AddColumn(new Column("Phone").SetLabel("Phone").SetSearch(true))
          .SetSearchToolbar(true)
          .SetUrl(Url.Action("GetData", "Controller"))
          .SetSearchOnEnter(false)
          .SetRowNum(setting != null?setting.PageSize : 10)
          .SetPage(setting != null?setting.PageIndex : 1);
          .SetSortName(setting != null?setting.SortColumn : "");
          .SetRowList(new[] { 10, 15, 20, 50 })
          .SetViewRecords(true)
          .SetPager("pager"))

【讨论】:

    猜你喜欢
    • 2015-03-12
    • 1970-01-01
    • 2012-07-08
    • 1970-01-01
    • 2019-05-02
    • 2023-03-08
    • 1970-01-01
    • 1970-01-01
    • 2017-08-25
    相关资源
    最近更新 更多