質問

行ごとの日付付きアイテムを含むデータソースがあります。これらはリピーターにバインドされ、日付順に並べられます。レンダリング時に毎月個別のテーブルとして表示したいのですが、サーバー側コードから複数のリピーターを動的に追加することなく、リピーターコントロールでこれを行う方法はありますか?

理想的には、次のものが欲しいです:

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番目のリピーターにデータをロードするイベント。

シンプル、効果的、管理が簡単です。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top