Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 按日期显示多条记录_Asp.net_Webforms - Fatal编程技术网

Asp.net 按日期显示多条记录

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

大家好,我有一个名为ChatMessageBO的类,它具有Id、Msg、Name和date等属性

我想按日期显示数据

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方法应该很有用

接下来需要做的是使用适当的控件来显示分组数据。 考虑下面的例子。

我有class
ChatMessage
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();
        }
    }
}