我最近开始与<asp:Repeater/>
合作。我在数据库中有一个表,其中包含以下列
ID
Message
Flag
我不允许以任何方式改变牌桌。存储的消息来自经理和员工。只有这样才能找到哪个邮件属于具有Flag
或manager
标记的employee
列的用户。现在我需要从这个表中读取并在asp.net中开发的webform上显示它。我可以读取值没有问题,但问题是我需要一个接一个地显示它作为一个convo,所以我使用了<asp:Repeater/>
但我似乎无法将消息放在不同的例如td
第一行应该有经理消息
第二行应该有员工留言
以下代码是我目前的努力。
标记
<ItemTemplate>
<tr>
<td class="manager">
<%:GetMessage("manager") %>
</td>
</tr>
<tr>
<td class="employee">
<%:GetMessage("employee") %>
</td>
</tr>
和C#代码
protected string GetMessage(string flagIndicator)
{
using (SqlConnection connection = new SqlConnection(Common.ConnectionString))
{
string myQuery = @"SELECT MESSAGES FROM MYTABLE WHERE FLAG = @flag";
using (SqlCommand cmd = new SqlCommand(myQuery, connection))
{
cmd.Parameters.AddWithValue("@flag", flagIndicator);
connection.Open();
using (SqlDataReader reader = cmd.ExecuteReader())
{
while (reader.Read())
{
Message = reader["MESSAGES"].ToString();
MyRepeater.DataSource = reader;
MyRepeater.DataBind();
}
}
}
}
//How to return the messages so they are spilt up by the flag
}
private string Message { get; set; }
提前感谢您的帮助
答案 0 :(得分:0)
查看:
<asp:Repeater ID="pageList" runat="server">
<ItemTemplate>
<tr>
<td class='<%# ((System.Data.DataRowView)Container.DataItem)["Flag"]%>'>
<%# ((System.Data.DataRowView)Container.DataItem)["Message"]%>
</td>
</tr>
</ItemTemplate>
</asp:Repeater>
代码背后:
private void Page_PreRender(object sender, EventArgs e)
{
pageList.DataSource = GetAllMessages();
pageList.DataBind();
}
商务:
protected DataTable GetAllMessages()
{
using (SqlConnection connection = new SqlConnection(Common.ConnectionString))
{
string myQuery = @"SELECT MESSAGES FROM MYTABLE";
SqlDataAdapter adapter = new SqlDataAdapter(queryString, connection);
DataSet messagesDS = new DataSet();
adapter.Fill(messagesDS, "MYTABLE");
return messagesDS.Tables[0];
}
}