Я немного экспериментирую с несколькими сетками в asp.net mvc. У Microsoft есть сетка, которая слишком известна в предварительном выпуске mvc 3, поэтому я подумал, что попробую это сделать.
Базовая функциональность довольно проста в реализации, но когда дело доходит до сортировки, у меня возникают некоторые проблемы. Сетка обрабатывает его сортировку по URL-адресу. В URL-адресе у вас есть столбец сортировки и направление сортировки следующим образом:? Sortdir = ASC & сорт = абонемент
Теперь вы ожидаете, что после того, как вы выполнили сортировку по определенному столбцу, сортировка сортировки по этому столбцу изменится на? sortdir = DESC но это не так. Он остается? Sortdir = ASC. Кто-нибудь знает, если это ошибка или функция, и как это решить?
Еще одна очень неприятная вещь: если я нажму на ссылку сортировки, будет выполнен запрос на httpget. Из-за этого я теряю свою модель. Поскольку на странице есть возможность фильтровать сетку (функции поиска), я хочу сохранить это в модели. По-моему, было бы намного проще и чище решить поставить эти данные в состояние модели, чем хранить его в состоянии сеанса. Возможно ли изменить поведение ссылок заголовка сортировки, чтобы выполнить пост http?
Любые идеи или мысли по этому поводу? Tnx для справки.
greetz, Koen
Код представления следующий:
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
<table>
<tr>
<td>
<h1 class="normal">List of subscription</h1>
</td>
<td>
</td>
</tr>
</table>
<% using (Html.BeginForm("List", "Subscription", FormMethod.Post)) { %>
<table border="0" cellpadding="0" cellspacing="5">
<tr>
<td>
Search By
</td>
<td>
<%: Html.DropDownListFor(m => m.SearchByColumn, Ogone.FrontEnd.Web.Controllers.SubscriptionController.SubscriptionSearchList) %>
</td>
<td>
<%: Html.TextBoxFor(m => m.SearchByText) %>
</td>
<td>
<input name="button" type="submit" value="Search" />
</td>
</tr>
</table>
<div>
<%
var grid = new System.Web.Helpers.WebGrid(Model.SubscriptionList,
columnNames: new List<string>(){"Title"},
canPage:false);
%>
<%= grid.GetHtml(columns: grid.Columns(
grid.Column(format: (item) => Html.ActionLink("Edit", "Edit", new { id = item.ID })),
grid.Column("ID"),
grid.Column("ISP"),
grid.Column("ABONNEMENT"),
grid.Column("MODE"),
grid.Column("SETUPFEE"),
grid.Column("MONTHLYFEE"))
) %>
</div>