質問
以下のようなものを表示する必要があります。
タイプA
- タイプAアイテム1
- タイプAアイテム2
- タイプAアイテム3
タイプB
- タイプBアイテム1
- タイプBアイテム2
- タイプBアイテム3
タイプC
- タイプCアイテム1
- タイプCアイテム2
- タイプCアイテム3
すべてのデータは、「Type」列と「ItemName」列のあるデータセットから取得されます。簡単な解決策は、「タイプ」ごとにリピーターを作成し、「タイプ」ごとにデータセットをフィルター処理することです。ただし、リピーターを1つだけ使用したいのですが、それに関する問題は、新しいセクションごとにヘッダーがあることを認識するための何らかの方法が必要なことです。
<div>[Header][Item]</div>
[Header] = <b>Type A</b><br />
[Item] = Type A Item 1
したがって、各タイプの最初のアイテムのみがヘッダーアイテムを取得し、他のすべてのアイテムは空の文字列に設定されます。
誰でも役立つトリックを知っていますか?
解決
各タイプのリピーターを作成する代わりに、ネストされたリピーターはどうですか?
http://www.codeproject.com/KB/aspnet/AspNetNestedRepeaters.aspx
試してみてください。それでも複数のリピーターが必要になりますが、この場合、必要なのは2つだけで、タイプごとに1つ作成する必要はありません(心配しているように)。その中のアイテム。上記のリンクは、さらに調査するための良い出発点になるはずです。
他のヒント
OK、解決策を思いついたところです。かなり汚れていますが。
ヘッダーを追跡するグローバル変数を作成しました。変数は文字列のリストです。 OnItemDatabindヘッダーアイテムがグローバルリストにあるかどうかを確認します。
アイテムが存在しない場合は、リストに追加してヘッダーを表示します。それ以外の場合、ヘッダー項目は空です。
これまでのところは機能しますが、それについてどう感じているかわかりません。
編集: 別のコントロールがこれでうまく機能するかどうか疑問に思っています...
それらがタイプでソートされていると仮定すると、リスト全体を保持する必要はありません:現在のアイテムだけです。
制御/ブレークレポートの詳細については、こちらをご覧ください。