我在 asp.net mvc 中尝试了几个网格。微软在 mvc 3 的预发行版中也有一个网格,所以我想我会尝试一下。
基本功能很容易实现,但是在排序方面,我遇到了一些问题。网格按 url 处理其排序。在 url 中,您具有以下方式的排序列和排序方向: ?sortdir=ASC&sort=ABONNEMENT
现在您会期望在对某个列进行排序后,该列上的 sortdir 查询字符串会更改为 ?sortdir=DESC 但它不会。它保持 ?sortdir=ASC 。有谁知道这是一个错误还是一个功能,以及如何解决这个问题?
另一个很烦人的事情:如果我点击一个排序链接,一个 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>