1

我有一个数据集,它返回一组与某些评论相关的数据。数据集中的一些数据从另一个数据库迁移到我正在使用的数据库中。因此数据集包含公司 A 和公司 B 的数据。

我正在使用转发器来显示数据集,我需要在转发器之间显示一条消息,说明这是 A 公司评论,这是 B 公司评论。我不想重复这个消息。一个简单的例子,

Company A reviews
Review 1- I am recommending this company, 10 out of 10
Review 2- I am recommending this company, 9 out of 10

Company B reviews
Review 3- I am recommending this company, 10 out of 10
Review 4- I am recommending this company, 9 out of 10

只是想知道这是否可能使用单个中继器。或者我必须为此使用 2 个不同的中继器并分别显示它们。

4

2 回答 2

0

据我所知,ASP.net 中继器不支持分组。完成您想要的事情的理想解决方案(假设您的数据以典型的父子关系结构化)是使用嵌套转发器。外部转发器将绑定到您拥有的公司列表,然后内部转发器将绑定到每个公司的评论。

以下是 Microsoft 提供的关于典型嵌套中继器场景的示例文章:

http://support.microsoft.com/kb/306154

于 2012-09-10T15:47:45.860 回答
0

您可以通过在转发器内使用额外的渲染来做到这一点,这些渲染在更改时渲染标题。这是一个完整的例子:

<asp:Repeater ID="Repeater1" runat="server">
    <ItemTemplate>
        <%#GetHeader(Container.DataItem)%>
        <%#GetData(Container.DataItem)%>
    </ItemTemplate>
</asp:Repeater>

和后面的代码:

public int cLastGroup = 1;

protected void Page_Load(object sender, EventArgs e)
{
    Repeater1.DataSource = new List<int> { 2, 3, 4, 5, 6, 7 , 8 };
    Repeater1.DataBind();
}

public string GetHeader(object oItem)
{
    // some how like that I will made yours
    // if(cLastGroup != current) {cLastGroup = current; return string.format()}

    // but now for test I make the 3 and 7 as header
    if (((int)oItem) == 3 || ((int)oItem) == 7)
        return string.Format("<br><br> Header :{0}", (int)oItem);
    else
        return string.Empty;
}

public string GetData(object oItem)
{
    return string.Format("<br> data :{0}", ((int)oItem));
}

并给出这个输出

data :2 

Header :3 
data :3 
data :4 
data :5 
data :6 

Header :7 
data :7 
data :8

Ps,为了让它按你喜欢的方式工作,唯一的事情是你的数据必须按“公司”排序

也可能有帮助:在绑定到中继器时希望每页有 10 行

希望这可以帮助您继续前进。

于 2012-09-10T18:27:27.280 回答