グループごとのASP.Netリピーターヘッダー(つまり、月)
質問
行ごとの日付付きアイテムを含むデータソースがあります。これらはリピーターにバインドされ、日付順に並べられます。レンダリング時に毎月個別のテーブルとして表示したいのですが、サーバー側コードから複数のリピーターを動的に追加することなく、リピーターコントロールでこれを行う方法はありますか?
理想的には、次のものが欲しいです:
Examples Data:
Row 1: Title 1, 01/12/2009
Row 2: Title 1, 02/12/2009
Row 1: Title 1, 01/01/2010
Row 1: Title 1, 02/01/2009
Required output:
Dec 09
-------------------------------
Title | Date |
-------------------------------|
Title1 | 01/12/2009 |
-------------------------------|
Title2 | 02/12/2010 |
-------------------------------|
Jan 10
-------------------------------
Title | Date |
-------------------------------|
Title1 | 01/01/2010 |
-------------------------------|
Title2 | 02/01/2010 |
-------------------------------|
解決
ItemTemplate内でPlaceHolderコントロールを使用して、繰り返しgoupヘッダーとフッターを含めることができます。次に、日付に基づいてOnItemDataBoundまたはOnItemCreatedイベントハンドラーでPlaceHoldersの可視性を設定します。このように:
<ItemTemplate>
<asp:PlaceHolder id="table_end" visible="<%# _newMonthStarting && (!_firstMonth) %>" runat="server">
</table>
</asp:PlaceHolder>
<asp:PlaceHolder id="table_end" visible="<%# _newMonthStarting %>" runat="server">
<div><%# _monthHeader</div>
<table>
<tr>
<th>Title</th>
<th>Date</th>
</tr>
</asp:PlaceHolder>
<tr>
<td><!-- data --></td>
<td><!-- data --></td>
</tr>
</ItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
他のヒント
サンプルデータと出力は一致しませんが、ここで何をしようとしているのか知っていると思います。
メインのリピーターにバインドするデータのセットを1つ取得するためにこれを解決します。これは、「Dec 09」です。および「Jan 10」データ。アイテムテンプレートの内部には、一度定義された別のリピーターがあり、単に「OnDataBound」を使用します。 2番目のリピーターにデータをロードするイベント。
シンプル、効果的、管理が簡単です。
所属していません StackOverflow