2016-10-06 62 views
0

Grid.MVC排序不按預期工作。例如,我有一個包含數字值和日期值的列。提供的屏幕截圖僅顯示Total Premium排序不正常,但同樣的情況也發生在生效日期列上。有什麼額外的我需要做些什麼來告訴它一個數字或日期,因此它排序正確?Grid.MVC排序錯誤

@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的屏幕截圖。

enter image description here

enter image description here

+0

它看起來像你排序他們作爲字符串,而不是整數;它們按字母排序,這就是爲什麼1226會在223之前出現。在排序之前,您需要將它們轉換爲整數。我對此沒有提供確切的方法表示歉意,我對MVC不是很熟悉 - 只是認爲這會讓你指向正確的方向。 – Santi

+0

只是爲了評論我以前的評論,同樣的日期。你需要將它們轉換爲它們各自的類型。 – Santi

+0

那很簡單。這些列正在被格式化爲來自其初始類型的字符串。明白了,它現在排序正確。感謝您的評論。 –

回答

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)