Заголовок репитера ASP.Net на группу (т.е. месяц)

StackOverflow https://stackoverflow.com/questions/1809357

  •  05-07-2019
  •  | 
  •  

Вопрос

У меня есть источник данных, который содержит датированные элементы в строке. Они будут привязаны к репитеру и упорядочены по дате. Я хотел бы представлять каждый месяц как отдельную таблицу при рендеринге, но есть ли способ сделать это с помощью элемента управления повторителем без необходимости динамического добавления нескольких повторителей из кода на стороне сервера?

В идеале мне бы хотелось следующее:

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 " событие для загрузки данных во второй повторитель.

Это простой, эффективный и простой в управлении.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top