我遇到了 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>
因此,正如您可以理解的那样,这里的想法是,如果用户获取/日期,则会向他们提供一组默认数据。如果用户将开始和结束日期发布到 /Date,则会向用户显示该数据子集。
这是一个很好的atm,保存一个圈套:如果你得到/日期,你有一个分页结果集(网格下的页码),如果你然后发布并获取新数据,然后单击任何页码,网格使用原始结果集和原始分页重新加载!
有什么办法可以重置吗?任何帮助表示赞赏!