将列绑定到列表和循环...是否可以?

时间:2012-01-04 14:45:02

标签: ajax model-view-controller telerik-grid

我是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

2 个答案:

答案 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 #>");
}