将列绑定到列表并循环...这可能吗?

发布于 2024-12-25 05:50:54 字数 2011 浏览 2 评论 0原文

我是 Telerik Grid 的新手用户,想知道是否可以使用 Telerik Grid 将一列绑定到字符串数组,然后以某种方式循环遍历它以将数组项显示为列表。

StoreViewModel:(一个商店可以有多个显示器)

public string Name { get;放; }

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_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

I'm a novice Telerik Grid user and was wondering if it is a possibility to use Telerik Grid such that I bound one column to a string array and then somehow loop through it to show the array items as list.

StoreViewModel:(One store can have multiple displays)

public string Name { get; set; }

public string[] StoreDisplays { get; set; }

Controller:

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 equals sd.sd_CategoryId into 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)
        %> 

Currently it Displays like this.

Name              Store Display
Store#1           Display#1Display#2Display#6
Store#2           Display#3Display#9

And want to some how show it as follows.

Name       Store Display
Store#1    Display#1
           Display#2
           Display#6

Store#2    Display#3
           Display#9

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

动次打次papapa 2025-01-01 05:50:54

而不是:

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

您应该使用模板进行绑定。该模板可以是您想要的任何内容(甚至是另一个网格)。

这是一个将图像放入其中的模板:

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

更改该模板以显示列表应该很简单。
请参阅此处了解更多信息。

Instead of:

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

You should bind using a template. That template can be whatever you want, (even another grid).

Here's a template that will put an image in:

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

Changing that template to display a list should be simple.
Look here for more info.

揪着可爱 2025-01-01 05:50:54

我会使用 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 #>");
}

I would use HTML tags in to make data to spread vertically

For example

StoreDisplays = "    
<ul>
    <li>Display#1</li>
    <li>Display#2</li>
    <li>Display#3</li>
</ul>";  


.Columns(columns =>
{
    columns.Bound(o => o.StoreDisplays).ClientTemplate("<#= StoreDisplays #>");
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文