一组标签的多个输出

Multiple Outputs From One Set of Labels

我正在使用 ASP.NET Web 表单和 SQL 数据库构建网站。数据库包含一个 table 和 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 个条目,而无需重复代码。

尝试使用中继器。这是一个特殊的控件,它允许只定义一次内部项目布局,然后绑定一些数据以呈现多个看起来一致但包含不同数据的块。

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>

等等