asp.net mvc でいくつかのグリッドを少し試しています。Microsoft は、mvc 3 のプレリリースであまりにもよく知っているグリッドを持っているので、それを試してみようと思いました。
基本的な機能は簡単に実装できますが、並べ替えに関してはいくつか問題があります。グリッドは、URL による並べ替えを処理します。URL には、次のように並べ替え列と並べ替え方向があります: ?sortdir=ASC&sort=ABONNEMENT
特定の列で並べ替えを行った後、その列の sortdir クエリ文字列が ?sortdir=DESC に変更されると予想されますが、そうではありません。?sortdir=ASC のままです。これがバグなのか機能なのか、またこれを解決する方法を知っている人はいますか?
もう 1 つの非常に面倒なこと: 並べ替えリンクをクリックすると、httpget 要求が実行されます。このため、モデルを失います。ページでグリッドをフィルター処理する可能性 (検索機能) があるため、これをモデルに保持したいと考えています。私の意見では、このデータをセッション状態に保存するよりも、モデル状態にする方がはるかに簡単でクリーンなソリューションです。http 投稿が実行されるように、ヘッダー リンクの並べ替えの動作を変更することは可能ですか?
これに関するアイデアや考えはありますか?助けてくれたTnx。
グリーツ、コーエン
ビューのコードは次のとおりです。
<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>