2012-10-11 8 views
10

में स्थिति के आधार पर पंक्ति को प्रारूपित करने के लिए कैसे मैं asp.net mvc पर काम कर रहा हूं। मैं एक केंडो एमवीसी यूई ग्रिड में संदेशों की सूची प्रदर्शित करने की कोशिश कर रहा हूं। मैं कोड लिखा है की तरह,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-बूलियन प्रकार की तरह तालिका में क्षेत्र की है। इसलिए यदि संदेश अपठित संदेश है तो मुझे उस रिकॉर्ड को बोल्ड फ़ॉन्ट के साथ प्रारूपित करने की आवश्यकता है। मैंने क्लाइंट टेम्पलेट्स का उपयोग किया है, लेकिन इसके साथ ही मैं केवल विशेष कोशिकाओं को प्रारूपित करने में सक्षम हूं, मैं पूरी पंक्ति प्रारूपित करना चाहता हूं। कृपया मेरा मार्ग दर्शन कीजिए।

उत्तर

7

आप अपनी पंक्तियों को बदलने के लिए डेटाबाउंड ईवेंट का उपयोग कर सकते हैं।

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

के रूप में संजा आप databound घटना का उपयोग कर सकते हैं लेकिन यह टीआर पर जाने के लिए बेहतर होगा तत्वों (पंक्तियाँ) का सुझाव दिया। साथ ही मुझे लगता है कि यह संदेश यह जांचने के लिए संबंधित dataItem की आवश्यकता होगी कि यह संदेश इंगित करता है कि संदेश पढ़ा गया है या नहीं।

उदा।

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

यह $ (this) .find ("tr")। प्रत्येक (function() की तरह नहीं होना चाहिए ...? जिस तरह से आप यह लिखा था, यह पृष्ठ पर टीआरएस के सभी के माध्यम से चक्र – Mahmoodvcs

+0

यह सही है, मैंने अपनी पोस्ट अपडेट की है और अब यह केवल ग्रिड टेबल तत्व की प्रत्यक्ष बच्चों की पंक्तियों के माध्यम से चक्र है। –

+0

क्या यह सच है कि यदि आप उपयोगकर्ता सर्वर डेटा बाध्यकारी, एला डेटासोर्स (डीएस => डीएस। सर्वर(), आप grid.dataItem (यह) का उपयोग कर जावास्क्रिप्ट में अंतर्निहित डेटा आइटम तक नहीं पहुंच सकता? – topwik