我正在上网聊天应用程序上完成我的学校任务。我希望使用数据列表在聊天框中显示以前的聊天记录,但数据列表不显示。无法显示C#中的datalist项目
这是我的.aspx代码:
<asp:DataList ID="DataList3" runat="server">
<ItemTemplate runat="server">
<div class="lv-item media">
<div class="lv-avatar pull-left">
<asp:Image ID="Image4" runat="server" ImageUrl='<%# Bind("Image") %>' />
</div>
<div class="media-body">
<div class="ms-item">
<span class="glyphicon glyphicon-triangle-left" style="color: #000000;"></span>
<asp:Label ID="Message" runat="server" Text='<%# Bind("Message") %>'></asp:Label>
</div>
<small class="ms-date"><span class="glyphicon glyphicon-time"></span>
<asp:Label ID="Date" runat="server" Text='<%# Bind("Time") %>'></asp:Label></small>
</div>
</div>
</ItemTemplate>
</asp:DataList>
而且这是我的.cs代码:
public void LoadChatbox()
{
Session["Name"] = "weiwei";
int waiwai = 1004;
//Request.QueryString["friendid"] = "waiwai";
Session["userid"] = 1005;
int userid = int.Parse(Session["userid"].ToString());
//int receiverid = int.Parse(Request.QueryString["friendid"]);
int receiverid = waiwai;
string name = Session["Name"].ToString();
DataSet ds = new DataSet();
ds.Locale = System.Globalization.CultureInfo.InvariantCulture;
IEnumerable<DataRow> query =
(from user in db.Users.AsEnumerable()
join ch in db.ChatHistories.AsEnumerable()
on user.Userid equals ch.Senderid
where ch.Senderid == userid && ch.Receiverid == receiverid || ch.Receiverid == userid && ch.Senderid == receiverid orderby ch.id
select new
{
Image = user.image,
Message = ch.message,
Time = ch.dateTime
})
as IEnumerable<DataRow>;
DataTable chatbox = query.CopyToDataTable<DataRow>();
ds.Tables.Add(chatbox);
DataList3.DataSource = ds;
DataList3.DataBind();
}
刚刚发现我的查询变量为空,但我该怎么做才能将linq查询插入到DataTable中? –
正如我所说的,项目到数据行列表或从匿名集合向数据表中添加行。还有关于如何做到这一点的其他问题和例子。 –