Я пытаюсь показать только разделитель ретранслятора, когда столбец с именем «дата» из предыдущего элемента отличается от текущей даты элемента.Скрыть элемент разделителя ретранслятора согласно предыдущему значению
Код, приведенный ниже, предназначен только для облегчения выяснения моих сомнений.
У меня есть ретранслятор, как это:
<asp:Repeater ID="tbData" runat="server">
<HeaderTemplate>
<table class="table table-striped">
<thead>
<tr>
<th>Date</th>
<th>Description</th>
</tr>
</thead>
<tbody>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td><%# DataBinder.Eval(Container.DataItem, "Date") %></td>
<td><%# DataBinder.Eval(Container.DataItem, "Description") %></td>
</tr>
</ItemTemplate>
<SeparatorTemplate>
<tr id="rowSeparator" runat="server" visible="false">
<td></td>
<td></td>
</tr>
</SeparatorTemplate>
<FooterTemplate>
</tbody>
</table>
</FooterTemplate>
</asp:Repeater>
Мне нужно только, чтобы показать разделитель, когда предыдущая дата отличается от текущей.
Date Description
28/03/2016 Sample
28/03/2016 Sample
=> Here separator is showed.
29/03/2016 Sample
Я пытался что-то вроде этого:
private DateTime? lastShowedDate = null;
public bool isOtherDate;
...
protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Separator)
{
//Compare last and current date
isOtherDate = ((MyType)e.Item.DataItem).MyDate.Date != lastShowedDate.Value.Date;
//Save current date for next item comparison
lastShowedDate = ((MyType)e.Item.DataItem).MyDate;
//Find and set control visibility
Control separator = (Control)e.Item.FindControl("rowSeparator");
separator.Visible = isOtherDate;
}
}
Так что же не работает? Логика сравнения даты или скрытие разделителя? –
Хранение сепаратора. Похоже, что логика сравнения в порядке – Marcoscdoni
Похоже, вы пытаетесь сгруппировать элементы с помощью seperator. Поэтому, возможно, вам следует изменить логику и попытаться использовать логику группировки. – oneNiceFriend