MVC3 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, ему предоставляется набор данных по умолчанию. Если пользователь ПОСТАВЛЯЕТ даты начала и окончания к / Дата, пользователю предоставляется это подмножество данных.
Это прекрасно работает, за исключением одной ловушки: если вы ПОЛУЧАЕТЕ / Date, у вас есть постраничный набор результатов (номера страниц под сеткой), если вы затем POST и получаете новые данные, затем нажмите на любой из номеров страниц, сетка перезагружается с исходным набором результатов и с оригинальной подкачкой страниц!
Есть ли способ сбросить это? Любая помощь приветствуется!
1 ответ
Хорошо, это не совсем то, что вам нужно, но вместо того, чтобы исправлять код веб-сетки. Моя рекомендация при работе с веб-сеткой состоит в том, чтобы отказаться от нее при использовании гораздо лучшего элемента управления (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
Много информации в сети - но демоверсия покажет вам это довольно просто. Там нет никакого сравнения, насколько я обеспокоен - и, как я уже сказал - бесплатный и открытый исходный код.