使用Telerik MVC3网格,C#,。Net 2010;
我的剃刀视图中有一个网格:
@(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属性。它没有改变。文字仍然是单行。
提前致谢。
答案 0 :(得分:4)
谢谢@nekno。在我的案例中,我提出了这个解决方案。很抱歉暂时不回复。
在视图模型中:
this.Categories = String.Join("<br>", entity.Categories.Select(o => o.Current.Name));
在视图中: columns.Bound(o =&gt; o.Categories).ClientTemplate(“&lt;#= Categories#&gt;”)
答案 1 :(得分:1)
如果您尝试与NewLine
进行联接很容易,请尝试使用"<br />"
代替System.NewLine
。
否则,ProductListItem.Categories
属性的数据类型是什么?如果它是List<String>
或其他IEnumerable
,则可以使用模板列而不是绑定列。您可以使用item
来引用模板中的当前ProductListItem
:
@(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()