2011-07-15 10 views
1

次のコードを部分的に表示しています。MVCContrib Html.Grid - 行の色を設定する方法は?

 <%= Html.Grid(Model).Columns(column => 
      { 
       column.For(model => model.Date).Format("{0:d}"); 
       column.For(model => model.DayAmount); 
       column.For(model => model.LeaveType); 
      }) 
      %></div> 
     <p><%= Html.Pager((IPagination)Model)%></p></div> 

最新の要件は、休暇タイプの行調整の色を設定することです。 したがって、私はデータテーブルに色の列、たとえばLeaveRowColourを追加するつもりです。 MVCContribでGoogleを検索すると、これを設定するためにRowAttributesプロパティを使用する必要があることがわかりました。しかし、私はこれをどうやって行うのか、あるいは私が別の解決法を見つけるべきかどうかは明らかではない。

答えて

1

あなたが適用するCSSクラスを決定するために、カスタムHTMLヘルパーを書くことができます:

public static class HtmlExtensions 
{ 
    public static string GetLeaveTypeCss(this HtmlHelper html, string leaveType) 
    { 
     if (leaveType == "Type 1") 
     { 
      return "t1"; 
     } 
     else if (leaveType == "Type 2") 
     { 
      return "t2"; 
     } 

     return "defaultType"; 
    } 
} 

、その後:

<%= Html 
    .RowAttributes(model => new Hash(@class => Html.GetLeaveTypeCss(model.Item.LeaveType))) 
    .Grid(Model) 
    .Columns(column => 
    { 
     column.For(model => model.Date).Format("{0:d}"); 
     column.For(model => model.DayAmount); 
     column.For(model => model.LeaveType); 
    }) 
%> 
+0

確かによさそうだソリューションです。しかし、データベーステーブルにFontColourフィールドを入れて、新しいLeaveTypeを置くとプログラムを変更する必要がなくなります。あなたのソリューションとクラスを追加する方法の構文を見て、私は同様の方法でスタイルを設定することができない場合があります。 – arame3333

+0

@ arame3333、モデルに直接スタイルを含むプロパティー名がある場合、それはさらに簡単です。ヘルパーは必要ありません。このプロパティーを直接使用できます。 –

+0

それは私が考えていることです。 model => Hash(@style => "FontColor:" + model.item.FontColor)のようなものですが、私は構文が間違っていると確信しています!私はこの文脈でハッシュが何であるかを知る必要があります。 – arame3333

関連する問題