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 Repeater はグループ化をサポートしていません。必要なことを達成するための理想的なソリューション (データが典型的な親子関係で構造化されていると仮定) は、ネストされたリピーターを使用することです。外側のリピーターは所有する企業のリストにバインドされ、内部のリピーターは各企業のレビューにバインドされます。

一般的な入れ子になったリピーターのシナリオについて 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 に答える