0

Grid.MVC 排序未按预期工作。例如,我有一列带有数字值和日期值。提供的屏幕截图仅显示 Total Premium 排序无法正常工作,但在 Effective Date 列上也会发生同样的事情。我需要做些什么来告诉它它的数字或日期,以便正确排序吗?

@Html.Grid(Model.SearchResult).Named("searchGrid").Columns(col =>
{
col.Add(c => c.PolicyNumber).Titled("Number").Sortable(true);
col.Add(c => c.FormattedInsuredName).Titled("Insured Name").Sortable(true);
col.Add(c => c.FormattedAddress).RenderValueAs(m => Html.Raw(m.FormattedAddress)).Encoded(false).Sanitized(false).Titled("Property Address").Sortable(true);
col.Add(c => c.Status).Titled("Status").Sortable(true);
col.Add(c => c.FormattedEffectiveDate).Titled("Effective Date").Sortable(true);
col.Add(c => c.FormattedTotalPremium).Titled("Total Premium").Sortable(true);
col.Add().Encoded(false).SetWidth(150).Sanitized(false).Titled("Action").RenderValueAs(dd => Html.DropDownList("ddlAction", dd.DropDownActions, new { @class = "form-control ddlAction", @data_viewquote = dd.QuoteURL }));
}).WithPaging(25).Sortable(true)

从下面的屏幕截图中,您可以看到 Total Premium 列的排序不正确。ASC 和 DESC 都有屏幕截图。

在此处输入图像描述

在此处输入图像描述

4

1 回答 1

0

感谢桑蒂的评论。

模型的类型被格式化为字符串,以便在它到达网格之前显示某种格式。删除了字符串格式并将格式放在网格上,以允许按正确的类型排序并仍然显示格式。下面的新网格带有额外的 .Format() 片段。

@Html.Grid(Model.SearchResult).Named("searchGrid").Columns(col =>
{
   col.Add(c => c.PolicyNumber).Titled("Number").Sortable(true);
   col.Add(c => c.FormattedInsuredName).Titled("Insured Name").Sortable(true);
   col.Add(c => c.FormattedAddress).RenderValueAs(m => Html.Raw(m.FormattedAddress)).Encoded(false).Sanitized(false).Titled("Property Address").Sortable(true);
   col.Add(c => c.Status).Titled("Status").Sortable(true);
   col.Add(c => c.FormattedEffectiveDate).Titled("Effective Date").Sortable(true).Format("{0:MM/dd/yyyy}");
   col.Add(c => c.FormattedTotalPremium).Titled("Total Premium").Sortable(true).Format("{0:C2}");
   col.Add().Encoded(false).SetWidth(150).Sanitized(false).Titled("Action").RenderValueAs(dd => Html.DropDownList("ddlAction", dd.DropDownActions, new { @class = "form-control ddlAction", @data_viewquote = dd.QuoteURL }));
}).WithPaging(25).Sortable(true)
于 2016-10-06T17:54:28.620 回答