2011-08-05 40 views
6

Sử dụng lưới Telerik MVC3, C#, .Net 2010;Ô đa dòng trong lưới Telerik (MVC3)

Tôi có một mạng lưới theo quan điểm dao cạo của tôi:

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

gì tôi muốn làm là thiết lập cột Thể loại lưới như nhiều dòng.

Có thể có nhiều Danh mục cho một Sản phẩm để các ô Danh mục trong lưới sẽ giống như;

Category0 
Category1 
Category2 

Tôi đã cố gắng Tham gia các giá trị danh mục với System.NewLine và
và chỉ định giá trị này cho thuộc tính ProductListItem.Categories. Nó không thay đổi. Văn bản vẫn là một dòng.

Xin cảm ơn trước.

Trả lời

4

Cảm ơn bạn @nekno. Tôi đã đưa ra giải pháp này trong trường hợp của tôi. Xin lỗi vì không trả lời trong một thời gian.

theo quan điểm của mô hình:

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

theo quan điểm: columns.Bound (o => o.Categories) .ClientTemplate ("< # = Categories #>")

1

Nếu thật dễ dàng khi bạn cố gắng tham gia với NewLine, hãy thử "<br />" thay vì System.NewLine.

Nếu không, loại dữ liệu thuộc tính ProductListItem.Categories của bạn là gì? Nếu đó là List<String> hoặc một số khác IEnumerable, bạn có thể sử dụng cột mẫu thay vì cột bị ràng buộc. Bạn sử dụng item để tham khảo các hiện ProductListItem trong mẫu:

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

tùy chọn khác có thể là để thực hiện một bảng trong mẫu cột, và để lại bạn ProductListItem.Categories như một List, ví dụ, 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 tài sản đang đến như chuỗi tham gia; this.Categories = String.Join ("
", entity.Categories.Select (o => o.Current.Name)); Tôi đã cố gắng này và lời khuyên của bạn để sử dụng tư vấn mẫu nhưng nó vẫn giống nhau: /. – berdem

+0

@berdem - Bạn có thể xem nguồn HTML trong trình duyệt của mình và dán vào đây những gì nó hiển thị cho ô bảng đó với nhiều Danh mục không? – nekno

Các vấn đề liên quan