Прежде всего, извините за детали. но его необходимо описать мою проблему. Каждая вещь объясняет себя не так трудно читать. Благодаря!Как связать ретранслятор со списком объектов GroupBy
У меня есть список объектов из моего класса. List<CalendarEvent> allCalendarEvents = GetEvents();
public class CalendarEvent
{
public int id { get; set; }
public ID itemId { get; set; }
public DateTime start { get; set; }
public DateTime end { get; set; }
public string subject { get; set; }
}
Теперь я хотел, чтобы сгруппировать события в Списке allCalendarEvents
по start
дате. Поэтому я использовал этот код:
var monthList = from e in allCalendarEvents
group e by e.start.Month into g
orderby g.Key
select new { month = g.Key, Event = g };
Все элементы в списке теперь группируются по месяцам. Все идет нормально. Я использовал ретранслятор ASP для отображения данных пользователю.
<asp:Repeater runat="server" ID="repMonths" OnItemDataBound="repMonths_OnItemDataBound">
<ItemTemplate>
<li>
<%# Eval("month") %>
Код За
repMonths.DataSource = monthList;
repMonths.DataBind();
Я могу видеть номер месяца в качестве вывода для моих данных, например для событий в мае, июне, июле, я вижу:
5
6
7
Теперь я хочу, чтобы показать пользователю, сколько CalenderEvents находятся внутри одной группы месяца. Если я использую использовать другой ретранслятор внутри repMonths
так:
<asp:Repeater runat="server" ID="repMonths" OnItemDataBound="repMonths_OnItemDataBound">
<ItemTemplate>
<li>
<%# Eval("month") %>
<asp:Repeater runat="server" ID="repInnerEvent">
<ItemTemplate>
<li>
<asp:Label runat="server" ID="lblEventName"></asp:Label>
</li>
</ItemTemplate>
</asp:Repeater>
</li>
</ItemTemplate>
</asp:Repeater>
Тогда я не знаю, как связать данные с внутренним ретранслятором. Например.
protected void repMonths_OnItemDataBound(object sender, RepeaterItemEventArgs e)
{
var item = e.Item.DataItem as ???; // I don't know what will come here
}
Но все тот же вопрос ... Как я могу предоставить «DataSource»? DataSource в моем случае - это события, которые сгруппированы по месяцам. Как я могу предоставить этот один элемент группы? Спасибо .. – Kamran
О, так вопрос в том, как получить данные для привязки? Не как связать. Похоже, у вас уже есть ваш запрос. Просто добавьте предложение where, где месяц является месяцем текущей строки. –
Прошу прощения, можете ли вы немного объяснить в ответе. Спасибо .. – Kamran