- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在 asp.net mvc 中尝试一些网格。Microsoft 在 mvc 3 的预发行版中也有一个网格,所以我想我会尝试一下。
基本功能很容易实现,但是当涉及到排序时,我遇到了一些问题。网格按照 url 进行排序。在 url 中,您可以按以下方式获得排序列和排序方向: ?sortdir=ASC&sort=放弃
现在您可能会期望在对特定列进行排序后,该列上的 sortdir 查询字符串将更改为 ?sortdir=DESC但事实并非如此。它保留 ?sortdir=ASC 。有谁知道这是一个错误还是一个功能,以及如何解决这个问题?
另一件非常烦人的事情:如果我单击排序链接,就会完成 httpget 请求。因此我失去了我的模型。因为页面上可以过滤网格(搜索功能),所以我想将其保留在模型中。在我看来,将这些数据放入模型状态比将其存储在 session 状态中是一个更容易和更干净的解决方案。是否可以更改排序 header 链接的行为,以便执行 http post?
对此有什么想法或想法吗?Tnx 寻求帮助。
科恩,问候
View 的代码如下:
<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>
最佳答案
发生这种情况是因为网格列名称必须与您的字段或属性相对应。在网格标题中生成 url 的方法将 url 查询字符串中的“排序”与有界列和网格列名称进行比较。他们三人一定是同一个人。如果您的列名称定义配置不正确,则将无法正确生成 url。
无论如何..这里是一些正确定义的列名称的示例。
这里我们有示例域类要显示
public class Person
{
public string FirstName;
public string LastName;
public Address LivesIn;
}
public class Address
{
public string Country;
public string City;
}
现在让我们显示列表
使用列名称作为字段
grid.Column("FirstName"),
grid.Column("LastName"),
grid.Column("LivesIn.City"),
grid.Column("LivesIn.Country")
...所有列都有正确的排序网址
如果您在列名称中输入错误,则会出现异常
grid.Column("FirstName"),
grid.Column("MyLastName"), <-- this throws exception
grid.Column("LivesIn.City"),
grid.Column("LivesIn.Country")
但是可以使用format,不会抛出异常
grid.Column("FirstName"),
grid.Column("MyLastName", format: item => item.LastName</text>),
grid.Column("LivesIn.City"),
grid.Column("LivesIn.Country")
...但是 MyLastName 列的排序 url 会很糟糕!始终sortDir=ASC
您需要使用良好的列名称来拥有正确的排序 url 和自定义格式,以便...
grid.Column("FirstName"),
grid.Column("LastName", format: item => item.LastName),
grid.Column("LivesIn.City"),
grid.Column("LivesIn.Country")
...一切都好
复杂类型怎么样?
grid.Column("FirstName"),
grid.Column("LastName"),
grid.Column("LivesIn.MyNonExistingField", format: item => item.LivesIn.City),
grid.Column("LivesIn.Country")
...哇...一切都好..那是bug的 child ..列“LivesIn.MyNonExistingField”有正确的排序网址。
好的...如果我们不想公开我们的域结构怎么办?然后我们需要在绑定(bind)时添加列名列表
var grid = new WebGrid(persons, columnNames: new [] { "Foo" });
-- or --
grid.Bind(persons, columnNames: new [] { "Foo" });
grid.Column("Foo", format: item => item.FirstName),
grid.Column("LastName"),
grid.Column("LivesIn.MyNonExistingField", format: item => item.LivesIn.City),
grid.Column("LivesIn.Country")
.. 现在 Foo 列具有正确的排序 url
但是要小心!还有一个错误。
如果我们将手动列名称添加到绑定(bind)中,则将跳过所有列,直到找到手动列。示例:
var grid = new WebGrid(persons, columnNames: new [] { "Foo" });
-- or --
grid.Bind(persons, columnNames: new [] { "Foo" });
grid.Column("FirstName"),
grid.Column("Foo", format: item => item.LastName),
grid.Column("LivesIn.MyNonExistingField", format: item => item.LivesIn.City),
grid.Column("LivesIn.Country")
...列“FirstName”的排序 url 将无法正确生成...sortDir=ASC 始终...要解决此问题,还需要添加一个“FirstName”作为列名称,如下所示:
var grid = new WebGrid(persons, columnNames: new [] { "FirstName", "Foo" });
-- or --
grid.Bind(persons, columnNames: new [] { "FirstName", "Foo" });
grid.Column("FirstName"),
grid.Column("Foo", format: item => item.LastName),
grid.Column("LivesIn.MyNonExistingField", format: item => item.LivesIn.City),
grid.Column("LivesIn.Country")
@科恩
在此处删除代码中的columnNames
var grid = new System.Web.Helpers.WebGrid(Model.SubscriptionList,
columnNames: new List<string>(){"Title"},
canPage:false);
...或在其中添加所有列名称,例如“ID”、“ISP”等
关于asp.net-mvc - asp.net mvc 3 webgrid 排序仍然存在 ?sortdir=ASC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4518039/
我正在尝试为 Webgrid 列设置宽度。但它不起作用。 请任何人帮助我。 请在我的代码下面找到 @grid.GetHtml( tableStyle: "webgrid-table", headerS
我在单个 View 上有 2 个 WebGrid,它们使用相同的模型。现在的问题是,每当我在单个 webgrid 上应用排序时,它也会对另一个 webgrid 进行排序。我正在使用 fieldName
我正在阅读和听到一些痛点,想知道我是否应该走那条路。更不用说,我似乎找不到任何权威文档(来自 Microsoft)。如果你说我不应该使用它,你会建议什么路线?我正在尝试建立一个新网站,但我想第一次就做
我试图显示一个进度条,直到我的网格完全加载,我看到了他们基于按钮点击的各种方法,但我无法想出一种方法来显示进度条,直到我的网格完全加载以及何时我导航到 webgrid 中的其他页面。这是我第一次使用
我正在 MVC3 中使用 WebGrid 进行一些部分页面更新,但是当我使用 $('#grid').html(data) 更新网格,然后单击网格中的列/链接以按该列排序时,我的页面重新加载时仅使用非
我正在开发 ASP.NET WebGrid,用于显示对象集合并允许向集合添加新对象。 在 Webgrid View 上,我有一个“添加”按钮,使用该按钮我可以根据模板动态添加新行并附加到网格。 我需要
我正在使用 MVC 3 webgrid,我需要在 webgrid 中添加一个新行以显示产品表中的价格总和。 任何想法都表示赞赏。 这是我的代码 @{ WebGrid grid = new WebGri
我正在尝试找到一种方法使整行都可点击。到目前为止,我发现的教程使用表格上可见的项目来为每行创建链接。例如 $(function(){ $('tbody tr').live('hover', f
我一直在开发一个 asp.net mvc 3 应用程序,我正在使用 webgrid 在我的 View 中显示表格数据。我的问题是,如何通过计算数据库中的记录数来分页一些数据,并在网格的页脚中显示 we
我已经设置了一个 webgrid,它似乎工作正常,允许我排序和分页。我添加了一个过滤器选项,该选项也很好用,但是如果我过滤并然后对结果进行排序,过滤器将丢失并显示所有记录。 这是我的 Razor Vi
我正在尝试使用 Razor 使 WebGrid View 正常工作,到目前为止,我已经设法设置了除页脚的分页图标之外的大部分样式。 我搜索了很多地方以了解如何修改页脚的当前选定页面(文本)但无济于事。
我突然遇到了一个非常烦人的问题,我不知道它是怎么来的。 我正在使用此代码在我的 View 中生成一个表: @{ var grid = new WebGrid( Model, rowsPerPa
我正在使用 WebGrid 来显示我的数据库中的数据表。该表有一列包含数量。我希望有人能告诉我为什么这个网格没有排序? @{ WebGrid grid = new WebGrid(
我在部分页面中有我的 webgrid,如下所示。从下一页开始,我通过 ajax 调用在局部 View 中更新了我的网格。 @using (Html.BeginForm("Manage", "Book"
我有一个下拉列表和按钮控件,单击按钮时我绑定(bind)了 WebGrid,它工作正常,加载时网格将为空,但绑定(bind)后网格分页不起作用,下面是我的代码 @using (Html.BeginFo
基本上,这是我在 View 中的代码,我不想重复 WebGrid 实例。 我的模型 public class UsersWithDetailsModels { public IEnumerab
我正在使用新的 MVC3 WebGrid。到目前为止一切顺利,只是在样式/格式化列标题时遇到问题。我得到的最好的方法是将相同的 css 类从 WebGrid 的第一行应用到表标题。 var heade
是否有任何原因无法检查和取消选中复选框?如果我不触摸任何复选框,它会在按钮单击事件中选中和取消选中所有复选框。如果我手动选中某个框,则该框从此不会被修改,但其余部分将继续修改。 如何解决这个问题? f
我遇到了与此相同的问题 question . 我创建了一个应该与 WebGrid 一起工作的过滤器。过滤器适用于第一页,但如果您尝试转到其他页面或对结果进行排序,则过滤器将丢失。我按照上一个问题中的建
我在我的 webgrid 上使用 JS 对其进行排序时遇到问题。所以这个想法是用户在文本框中输入字符串,然后在不刷新空洞页面的情况下刷新下面的 webgrid(根据匹配结果过滤)。现在我的代码可以很好
我是一名优秀的程序员,十分优秀!