2011-08-05 11 views
6

टेलीरिक एमवीसी 3 ग्रिड, सी #, नेट 2010 का उपयोग करना;टेलीरिक ग्रिड (एमवीसी 3) में मल्टीलाइन सेल

मैं अपने उस्तरा ध्यान में रखते हुए एक ग्रिड है:

@(Html.Telerik().Grid<ProductListItem>() 
.Name("Grid") 
.Columns(columns => 
{ 
     columns.Bound(o => o.Current.Name).Sortable(true).Filterable(false).Width(150); 
     columns.Bound(o => o.Categories).Sortable(true).Filterable(false).Width(200); 
     //other column bindings... 
}) 
.DataBinding(dataBinding => dataBinding.Ajax().Select(Model.GridAjaxRequestAction.ActionName, Model.GridAjaxRequestAction.ControllerName)) 
.Pageable(settings => settings.Total(Model.TotalRow)) 
.EnableCustomBinding(true) 
.Sortable() 
.Filterable() 

क्या मैं करना चाहता हूँ बहु के रूप में ग्रिड के वर्ग स्तंभ की स्थापना है।

उत्पाद के लिए कई श्रेणी हो सकती हैं ताकि ग्रिड में श्रेणी कक्षों की तरह हो;

Category0 
Category1 
Category2 

मैं System.NewLine और
साथ श्रेणी के मान से जुड़ें और ProductListItem.Categories संपत्ति को यह मान निर्दिष्ट करने की कोशिश की। यह नहीं बदलता है। पाठ अभी भी एक पंक्ति है।

अग्रिम धन्यवाद।

उत्तर

4

धन्यवाद @nekno। मैं अपने मामले में इस समाधान के साथ आया था। थोड़ी देर में जवाब देने के लिए खेद है।

दृश्य मॉडल में

:

this.Categories = String.Join("<br>", entity.Categories.Select(o => o.Current.Name));

ध्यान में रखते हुए

: columns.Bound (ओ => o.Categories) .ClientTemplate ("< # = श्रेणियाँ #>")

1

यदि यह आसान है जहां आपने NewLine के साथ शामिल होने का प्रयास किया है, तो System.NewLine के बजाय "<br />" आज़माएं।

अन्यथा, आपके ProductListItem.Categories संपत्ति का डेटा प्रकार क्या है? यदि यह List<String> या कुछ अन्य IEnumerable है, तो आप बाध्य कॉलम के बजाय टेम्पलेट कॉलम का उपयोग कर सकते हैं। आप टेम्पलेट में वर्तमान ProductListItem संदर्भ के लिए item का उपयोग करें:

@(Html.Telerik().Grid<ProductListItem>() 
.Name("Grid") 
.Columns(columns => 
{ 
     columns.Bound(o => o.Current.Name).Sortable(true).Filterable(false).Width(150); 
     columns.Template(
      @<text> 
       @String.Join("<br />", item.Categories) 
      </text>) 
      .Sortable(true).Filterable(false).Width(200); 
     //other column bindings... 
}) 
.DataBinding(dataBinding => dataBinding.Ajax().Select(Model.GridAjaxRequestAction.ActionName, Model.GridAjaxRequestAction.ControllerName)) 
.Pageable(settings => settings.Total(Model.TotalRow)) 
.EnableCustomBinding(true) 
.Sortable() 
.Filterable() 

एक अन्य विकल्प टेम्पलेट कॉलम में एक तालिका बनाने के लिए हो सकता है, और छोड़ अपने ProductListItem.Categories एक List के रूप में, उदाहरण के लिए, this.Categories = entity.Categories.Select(o => o.Current.Name).ToList();

@(Html.Telerik().Grid<ProductListItem>() 
    .Name("Grid") 
    .Columns(columns => 
    { 
      columns.Bound(o => o.Current.Name).Sortable(true).Filterable(false).Width(150); 
      columns.Template(
       @<text> 
        <table border=0> 
         @foreach(var category in item.Categories){ 
          <tr><td>@category</td></tr> 
         } 
        </table> 
       </text>) 
       .Sortable(true).Filterable(false).Width(200); 
      //other column bindings... 
    }) 
    .DataBinding(dataBinding => dataBinding.Ajax().Select(Model.GridAjaxRequestAction.ActionName, Model.GridAjaxRequestAction.ControllerName)) 
    .Pageable(settings => settings.Total(Model.TotalRow)) 
    .EnableCustomBinding(true) 
    .Sortable() 
    .Filterable() 
+0

ProductListItem.Categories संपत्ति स्ट्रिंग के रूप में आ रही है; यह। श्रेणियां = स्ट्रिंग। जॉइन ("
", इकाई। श्रेणियां। चयन करें (o => o.Current.Name)); मैंने टेम्पलेट सलाह का उपयोग करने के लिए यह और आपकी सलाह की कोशिश की लेकिन यह अभी भी वही है: /। – berdem

+0

@berdem - क्या आप अपने ब्राउज़र में एचटीएमएल स्रोत देख सकते हैं और यहां कई पेस्ट के साथ उस टेबल सेल के लिए जो दिखाता है उसे पेस्ट कर सकते हैं? – nekno

संबंधित मुद्दे