2016-10-06 8 views
0

Grid.MVCソートが期待通りに機能しません。たとえば、数値と日付の値を持つ列があります。表示されたスクリーンショットは、Total Premiumソートだけが正常に動作していないことを示していますが、同様のことが有効な日付カラムでも発生します。番号や日付を伝えるために何か追加が必要なのですか?Grid.MVC Sorting Bug

@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)