Привязать столбец к списку и зациклить ... Возможно ли это вообще? - PullRequest
0 голосов
/ 04 января 2012

Я новичок в 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)  

на ca.c_Id равен sd.sd_CategoryIdinto 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 голосов
/ 11 января 2012

Я бы использовал 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 #>");
}
0 голосов
/ 04 января 2012

Вместо:

columns.Bound(sg => sg.StoreDisplays);

Вы должны связать, используя шаблон.Этот шаблон может быть чем угодно, даже другой сеткой.

Вот шаблон, в который будет помещено изображение:

columns.Template(c => {
        %>
            <img 
                alt="<%= c.CustomerID %>" 
                src="<%= Url.Content("~/Content/Grid/Customers/" + c.CustomerID + ".jpg") %>" 
              />
        <%
        });

Изменение этого шаблона для отображения списка должно быть простым.Смотрите здесь для получения дополнительной информации.

...