Asp.net 按日期显示多条记录
大家好,我有一个名为ChatMessageBO的类,它具有Id、Msg、Name和date等属性 我想按日期显示数据Asp.net 按日期显示多条记录,asp.net,webforms,Asp.net,Webforms,大家好,我有一个名为ChatMessageBO的类,它具有Id、Msg、Name和date等属性 我想按日期显示数据 List<chatmessagebo> SortedList = directChatWindow.messages.OrderBy(o => o.ts).ToList(); MessageList.DataSource = SortedList; MessageList.DataBind(); List-SortedList=directChatWind
List<chatmessagebo> SortedList = directChatWindow.messages.OrderBy(o => o.ts).ToList();
MessageList.DataSource = SortedList;
MessageList.DataBind();
List-SortedList=directChatWindow.messages.OrderBy(o=>o.ts.ToList();
MessageList.DataSource=SortedList;
MessageList.DataBind();
在这里,我正确地获得了所有数据,但我想显示日期,然后显示名称和消息
范例
2017年7月3日
Jaydeep你好
日日
04-07-2017
尼哈·莫宁
jaydeep早上好
视图侧代码
date(这里我需要帮助)03 june包含3条记录,所以date然后name,msg然后04 june包含4条msg
'<%#Eval("name")%><%#Eval("msg")%>'
“”
您需要按日期对来自数据库的消息对象进行分组<代码>分组方式LINQ方法应该很有用
接下来需要做的是使用适当的控件来显示分组数据。
考虑下面的例子。
我有classChatMessage
和MessageGroup
ChatMessage
是一个与您一样简单的类,具有Id、名称、消息和日期属性<代码>消息组表示以日期作为分组因子的消息组
public class ChatMessage
{
public int Id { get; set; }
public string Message { get; set; }
public string Name { get; set; }
public DateTime Date { get; set; }
}
public class MessageGroup
{
public DateTime Date { get; set; }
public List<ChatMessage> Messages { get; set; }
}
下面是按日期对消息进行分组的方法,创建MessageGroup
对象的列表,并将其绑定到数据列表
private void DisplayMessages()
{
var messages = directChatWindow.messages.OrderBy(o => o.ts).ToList();
var list = messages.GroupBy(msg => msg.Date).Select(grp => new MessageGroup { Date = grp.Key, Messages = grp.ToList() });
messageList.DataSource = list;
messageList.DataBind();
}
在页面加载中调用此方法
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
DisplayMessages();
}
}
此代码将仅显示数据列表中的日期。要在内部数据列表中显示消息,我们需要处理主数据列表的ItemDataBound
事件。
在本例中,我们将获取绑定到DataList的当前项的当前DataItem。此数据项是MessageGroup
的对象。我们将内部数据列表绑定到MessageGroup
实例的Messages
属性
protected void messageList_ItemDataBound(object sender, DataListItemEventArgs e)
{
var messageGroup = e.Item.DataItem as MessageGroup;
if(messageGroup != null)
{
var subList = e.Item.FindControl("subMessageList") as DataList;
if(subList != null)
{
subList.DataSource = messageGroup.Messages;
subList.DataBind();
}
}
}
通过这种方式,您可以按您想要的方式显示数据。什么样的控件“MessageList”?它是ListView、DataList、GridView、ListBox吗?
protected void messageList_ItemDataBound(object sender, DataListItemEventArgs e)
{
var messageGroup = e.Item.DataItem as MessageGroup;
if(messageGroup != null)
{
var subList = e.Item.FindControl("subMessageList") as DataList;
if(subList != null)
{
subList.DataSource = messageGroup.Messages;
subList.DataBind();
}
}
}