2011-08-05 15 views
6

Telerik MVC3 ızgarasının kullanılması, C#, .Net 2010;Telerik ızgarasında çok hücreli hücre (MVC3)

benim jilet görünümünde bir kılavuz var:

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

Ne yapmak istediğim satırlı olarak ızgaranın Kategori sütununu ayardır.

Bir Ürün Kategorisi çok fazla olabilir, böylece ızgaradaki Kategori hücreleri şöyle olmalıdır;

Category0 
Category1 
Category2 

Ben System.NewLine ve
kategorisinde değerlerini katılın ve ProductListItem.Categories özelliğine bu değerleri atamak çalıştı. Değişmez. Metin hala tek satırdır.

Şimdiden teşekkürler.

cevap

4

Teşekkür ederiz @nekno. Benim durumumda bu çözümle geldim. Bir süre içinde cevap veremediğim için üzgünüm. görünüşüdür modelinde

: görünümünde

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

: columns.Bound (o => o.Categories) .ClientTemplate ("< # = Kategoriler #>")

1

Birleştirme işlemini NewLine ile yapmaya çalıştığınız yerdeyse, System.NewLine yerine "<br />"'u deneyin.

Aksi halde, ProductListItem.Categories özelliğinin veri tipi nedir? Bir List<String> veya başka bir IEnumerable ise, ilişkili bir sütun yerine bir şablon sütunu kullanabilirsiniz. Sen şablonda güncel ProductListItem başvurmak için item kullanın:

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

Diğer bir seçenek şablon sütununda bir tablo yapmak olacak ve terk edebilir senin ProductListItem.Categories, List bir şekilde örneğin 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 özellik birleştirilen dizi olarak geliyor; this.Categories = String.Join ("
", entity.Categories.Select (o => o.Current.Name)); Bunu ve tavsiyenizi Şablon tavsiyesi kullanmaya çalıştım ama yine de aynı: /. – berdem

+0

@berdem - HTML kaynağını tarayıcınızda görüntüleyebilir ve bu tablo hücresi için birden fazla kategoriye sahip olduklarını buraya yapıştırır mısınız? – nekno