我正在使用SQL数据库在ASP.NET Web窗体中构建一个网站。该数据库包含一个包含571个条目数据的表。
输出
源代码
using (SqlConnection connection = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString))
{
using (SqlCommand command = new SqlCommand("SELECT Id, Name, Townland, Near, Status, Built FROM Houses ORDER BY Name DESC", connection))
{
connection.Open();
using (SqlDataReader reader = command.ExecuteReader())
{
while (reader.Read())
{
lblId.Text = reader[0].ToString();
lblName.Text = reader[1].ToString();
lblTown.Text = reader[2].ToString();
lblNear.Text = reader[3].ToString();
lblStatus.Text = reader[4].ToString();
lblBuilt.Text = reader[5].ToString();
}
}
}
}
数据库
我想要显示所有571个房子要做到这一点我需要为每个房子设置一组标签但有一种方法我可以有一组标签,如上面的代码输出所有571条目而不重复代码。
答案 0 :(得分:0)
尝试使用中继器。这是一个特殊的控件,它允许仅定义一个内部项布局,然后绑定一些数据以呈现一致的多个块,但包含不同的数据。
Repeater具有ItemTempalte属性,允许您包装要查看的所有标签。
<asp:Repeater ID="rptData" runat="server">
<ItemTemplate>
<asp:Label runat="server" Text='<%# Eval("Id") %>'></asp:Label>
<asp:Label runat="server" Text='<%# Eval("Name") %>'></asp:Label>
</ItemTemplate>
</asp:Repeater>
然后只需将数据库行加载到转发器中:
rptData.DataSource = command.ExecuteReader();
rptData.DataBind();
最后,在HTML布局中指定标签到各列的映射 - 比如
<asp:Label runat="server" Text='<%# Eval("Name") %>'></asp:Label>
或
<asp:Label runat="server" Text='<%# Eval("Townland") %>'></asp:Label>
等