Заголовок репитера 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 |
-------------------------------|
Решение
Вы можете использовать элементы управления PlaceHolder в шаблоне ItemTemplate для хранения повторяющихся верхних и нижних колонтитулов. Затем установите видимость PlaceHolders в обработчиках событий OnItemDataBound или OnItemCreated на основе дат. Вот так:
<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". и "10 января" данные. Внутри шаблона элемента есть еще один повторитель, определенный один раз, и просто используйте " OnDataBound " событие для загрузки данных во второй повторитель.
Это простой, эффективный и простой в управлении.