2011-08-05 7 views
6

Telerik MVC3 그리드 사용, C#, .Net 2010;Telerik 그리드 (MVC3)의 다중 셀

나는 나의 면도칼보기에서 그리드를 가지고 :

@(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 => 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 A와 예를 들어, 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 속성이 조인 된 문자열로오고 있습니다. this.Categories = String.Join ("
", entity.Categories.Select (o => o.Current.Name)); 나는 이것과 당신의 충고를 템플릿 조언을 사용하려고했지만 여전히 동일하다 : /. – berdem

+0

@berdem - 브라우저에서 HTML 소스를보고 여러 범주가있는 해당 표 셀에 표시되는 내용을 여기에 붙여 넣을 수 있습니까? – nekno

관련 문제