MVC3 WebGrid在通过post创建新网格后保留其分页数据!

时间:2011-06-14 23:05:54

标签: asp.net-mvc-3 webgrid

我遇到了WebGrid分页问题;但首先,这里有一些控制器伪代码:

public ActionResult Date()
{
  var data = getLINQ();
  return View(data);
}

[HttpPost]
public ActionResult Date(string start, string finish)
{
   var data - getLINQ(start, finish);
   return View(data);
}

..和一些观看代码:

@model IEnumerable<ModelClass>

@{
   ViewBag.Title = "Date";
   Layout = "~/Views/Shared/_Layout.cshtml";
   var grid = new WebGrid(source: Model, rowsPerPage: 25);
}


@using (Html.BeginForm())
{
<fieldset>
    <span>From date: <input type="text" id="start" name="start" data-val="true" value="@ViewBag.start" /></span> 
    <span>To date: <input type="text" id="finish" name="finish" data-val="true" value="@ViewBag.finish" /></span>
    <input type="submit" value="Update" />
</fieldset>
}

<div>
@grid.GetHtml(tableStyle: "table", caption: "Claims Between " + @ViewBag.start + " and " + @ViewBag.finish, htmlAttributes: new { cellspacing = "0", cellpadding = "0", id = "_grid" }, 
                        columns: grid.Columns(
                        grid.Column("ID", "ID"),
                        grid.Column("DateReceived", "Date Received"),
                        grid.Column("Client", "Client"),
                        grid.Column("ReferenceNumber", "Reference Number"),
                        grid.Column("PatientLastName", "Patient Last Name"),
                        grid.Column("PatientFirstName", "Patient First Name"),
                        grid.Column("ClaimType", "Type"),
                        grid.Column("BilledCharges", "Billed Charges", item => String.Format("{0:C}", item.BilledCharges ?? 0)),
                        grid.Column("ReimbursementAgent", "Reimbursement Agent")))
</div>

因此,正如您可以解读的那样,这里的想法是如果用户获取GETS / Date,则会向他们显示一组默认数据。如果用户POSTS开始和结束日期为/ Date,则向用户呈现该数据子集。

这是一个很棒的工作,除了一个小圈子:如果你获得/日期,你有一个分页结果集(网格下的页码),如果你然后POST并获取新数据,然后点击任何一个页面数字,网格重新加载原始结果集和原始分页!

有没有办法重置?任何帮助表示赞赏!

1 个答案:

答案 0 :(得分:0)

好吧 - 它不是你想要的 - 而不是修复webgrid代码,我在处理WebGrid时的建议是放弃使用更好的控件(imho) - Telerik MVC网格。它免费,开源,而且非常易于使用。您可以使用大约两行代码设置ajax分页。下载地址:

http://telerikaspnetmvc.codeplex.com/

演示: http://demos.telerik.com/aspnet-mvc/grid/

博客文章: http://msmvps.com/blogs/bmains/archive/2010/01/04/using-the-telerik-mvc-grid.aspx

网上有很多信息 - 但是演示应该很容易向你展示。就我而言 - 就像我说的那样 - 没有比较 - 免费和开源。