我是Telerik Grid的新手用户,并且想知道是否有可能使用Telerik Grid,这样我就可以将一列绑定到字符串数组,然后以某种方式遍历它以将数组项显示为列表。
StoreViewModel :(一个商店可以有多个显示器)
public string Name { get; set; }
public string[] StoreDisplays { get; set; }
控制器:
private IQueryable<StoreViewModel> GetRetailers()
{
var stores = from sg in db.Store
select new RetailerViewModel
{
Name = sg.sg_Name,
Name = sg.sg_Name,
StoreDisplays = ( from ca in db.Categories.Where(item => item.c_ParentId == null)
join sd in db.StoreDisplays.Where(item => item.sd_StoreGroupId == sg.sg_Id)
on ca.c_Id将sd.sd_CategoryId等于gj
from subpet in gj.DefaultIfEmpty()
select (ca.c_Name)).ToArray<string>()
};
return stores;
}
的Index.aspx
<%= Html.Telerik().Grid<StoreLocatorBackOffice.Models.RetailerViewModel>(Model) <br/>
.Name("Grid")
.Columns(columns =>
{
columns.Bound(sg => sg.Name)
columns.Bound(sg => sg.StoreDisplays);
})
.DataBinding(dataBinding => dataBinding
.Ajax()
.Select("_Index", "Retailer", true)
)
.Scrollable(scrolling => scrolling.Enabled(false))
.Sortable(sorting => sorting
.OrderBy(sortOrder => sortOrder.Add(p => p.Name).Ascending()))
.Pageable(settings => settings.PageSize((int)ViewData["pageSize"]))
.Filterable(filtering => filtering.Enabled(true))
.Footer(true)
%>
目前它显示如下。
Name Store Display
Store#1 Display#1Display#2Display#6
Store#2 Display#3Display#9
想要了解如何显示如下。
Name Store Display
Store#1 Display#1
Display#2
Display#6
Store#2 Display#3
Display#9
答案 0 :(得分:0)
而不是:
columns.Bound(sg => sg.StoreDisplays);
您应该使用模板进行绑定。该模板可以是您想要的任何内容(甚至是另一个网格)。
这是一个将图像放入的模板:
columns.Template(c => {
%>
<img
alt="<%= c.CustomerID %>"
src="<%= Url.Content("~/Content/Grid/Customers/" + c.CustomerID + ".jpg") %>"
/>
<%
});
更改该模板以显示列表应该很简单。 查看here了解更多信息。
答案 1 :(得分:0)
我会使用HTML标签使数据垂直传播
例如
StoreDisplays = "
<ul>
<li>Display#1</li>
<li>Display#2</li>
<li>Display#3</li>
</ul>";
.Columns(columns =>
{
columns.Bound(o => o.StoreDisplays).ClientTemplate("<#= StoreDisplays #>");
}