2012-10-11 73 views
10

我正在使用asp.net mvc。我試圖在Kendo mvc ui網格中顯示消息列表。 我所編寫的代碼等,如何根據條件在kendo ui mvc grid中格式化行

Html.Kendo().Grid((List<messages>)ViewBag.Messages)) 
       .Name("grdIndox") 
       .Sortable(m => m.Enabled(true).SortMode(GridSortMode.MultipleColumn)) 
       .HtmlAttributes(new { style = "" }) 
       .Columns(
       col => 
       { 
        col.Bound(o => o.RecNo).HtmlAttributes(new { style = "display:none" }).Title("").HeaderHtmlAttributes(new { style = "display:none" }); 
        col.Bound(o => o.NoteDate).Title("Date").Format("{0:MMM d, yyyy}"); 
        col.Bound(o => o.PatName).Title("Patient"); 
        col.Bound(o => o.NoteType).Title("Type"); 
        col.Bound(o => o.Subject); 

       } 

       ) 
       .Pageable() 
       .Selectable(sel => sel.Mode(GridSelectionMode.Single).Type(GridSelectionType.Row)) 
       .DataSource(

          ds => ds.Ajax().ServerOperation(false).Model(m => m.Id(modelid => modelid.RecNo)) 
         .PageSize(10) 
          //.Read(read => read.Action("Messages_Read", "Msg")) 
       ) 

       .Events(ev => ev.Change("onSelectingGirdRow")) 
       ) 

和我有像IsRead布爾類型表中的字段。所以如果消息是未讀消息,那麼我需要用粗體字格式化該記錄。我已經使用clientTemplates,但與我能夠只格式特定的單元格,我想格式整行。請指導我。

回答

7

您可以使用dataBound事件來更改行。

dataBound: function() 
{ 
    $('td').each(function(){ 
    if(some condition...) 
     { 
     $(this).addClass('someBoldClass')} 
     } 
    }) 
} 
18

爲莎娜建議您可以使用數據綁定事件,但它會通過TR更好地循環要素(行)。此外,我還假設您將需要相關的dataItem來檢查指示消息是否被讀取的屬性。

例如

dataBound: function() 
{ 
    var grid = this; 
    grid.tbody.find('>tr').each(function(){ 
    var dataItem = grid.dataItem(this); 
    if(!dataItem.IsMessageRead) 
     { 
     $(this).addClass('someBoldClass'); 
     } 
    }) 
} 
+0

它不應該是這樣$(本).find(「TR」)。每個(函數()...? 的方式你寫它,它就能把所有的頁面上的TR的週期 – Mahmoodvcs

+0

這是正確的,我更新了我的帖子,現在它只通過Grid表元素的直接子行來循環。 –

+0

是真的,如果你用戶服務器數據綁定,ala DataSource(ds => ds.Server(),你無法使用grid.dataItem(this)訪問javascript中的底層數據項? – topwik