在C#或使用jQuery中按日期属性拆分列表
我有一个在C#或使用jQuery中按日期属性拆分列表,c#,jquery,asp.net,repeater,C#,Jquery,Asp.net,Repeater,我有一个列表,一个事件有一个日期属性。我目前正在将此列表绑定到一个asp:repeater,这很好,并生成一个事件标题列表,如下所示: 事件1 事件2 事件3 事件4 事件5 但是,现在我希望在不同日期发生的事件之间的列表中添加某种分隔符,以便我的列表如下所示: 2011年5月10日,星期二 事件1 事件2 2011年5月11日,星期三 事件3 2011年5月12日,星期四 事件4 事件5 有人能推荐一个好的方法吗。我很乐意在服务器端操作列表,或者绑定列表,然后使用jQuery在客户端添加分隔符
列表
,一个事件
有一个日期
属性。我目前正在将此列表绑定到一个asp:repeater
,这很好,并生成一个事件标题列表,如下所示:
事件1事件2
事件3
事件4
事件5 但是,现在我希望在不同日期发生的事件之间的列表中添加某种分隔符,以便我的列表如下所示: 2011年5月10日,星期二 事件1
事件2
2011年5月11日,星期三 事件3
2011年5月12日,星期四 事件4
事件5
有人能推荐一个好的方法吗。我很乐意在服务器端操作列表,或者绑定列表,然后使用jQuery在客户端添加分隔符。有什么建议吗?或者您可以使用嵌套中继器-在这种情况下,您需要两个中继器 父重复渲染器渲染日期,并为父项的日期嵌套一个项
所有这些都是关于以另一种方式设置中继器的数据源,而不是当前数据源,并使用Repeater.ItemDataBound事件进行播放。您可以按天对事件进行分组,并将该键用作中继器的标头 另一种方式: List date = (From Event n in yourEventList select new {n.Date}).ToList().Distinct(); foreach (DateTime dateA in date) { //add to the Date and then add the events does match with the date. } 列表日期=(来自事件列表中的事件n 选择new{n.Date}).ToList().Distinct(); foreach(日期时间dateA in date) { //添加到日期,然后添加与日期不匹配的事件。 }
您可以使用Linq按日期服务器端分组
类事件
{
公共日期时间事件日期;
公共字符串EventName;
}
List events=GetEvents();
var grouped=events.GroupBy(e=>e.EventDate.Date).OrderBy(g=>g.Key);
foreach(分组中的变量分组)
{
Console.WriteLine(grouping.Key);//您可以使用嵌套的asp:repeater
,查询按事件日期分组,外部的repeater只显示日期,内部的repeater显示该组的事件。+1-我在Matias Fidemraizer的回答中使用了这个和嵌套的repeater来实现我想要的。+1-我使用了这个和分组,以防震惊星球这是实现我想要的答案。
class Event
{
public DateTime EventDate;
public string EventName;
}
List<Event> events = GetEvents();
var grouped = events.GroupBy(e => e.EventDate.Date).OrderBy(g => g.Key);
foreach (var grouping in grouped)
{
Console.WriteLine(grouping.Key); // <-- this is the date
foreach (Event e in grouping) // <-- this is the list of events
{
Console.WriteLine(e.EventName);
}
}