ASP.NET Web Forms - Repeater 控件


ASP.NET Web Forms - Repeater 控件

ASP.NET Web Forms - Repeater 控件是一个非常常用的控件,可以在 ASP.NET 网页中循环地显示一组数据。与 GridView 控件相比,Repeater 控件更加灵活,可以自定义每个数据项的样式和外观,并且不需要与数据库直接交互,可以使用数据集合、数组和对象等数据源。

如何使用 Repeater 控件

您可以在 Visual Studio 的工具箱中找到 Repeater 控件,然后拖拽到 ASP.NET 网页的设计视图中。在代码视图中,您需要编写绑定数据和设置 Repeater 控件的模板等代码。

以下是 Repeater 控件的基本语法:

<asp:Repeater ID="Repeater1" runat="server">
    <HeaderTemplate>
        <table>
            <tr>
                <th>标题1</th>
                <th>标题2</th>
                <th>标题3</th>
            </tr>
    </HeaderTemplate>
    <ItemTemplate>
            <tr>
                <td><%#Eval("属性1")%></td>
                <td><%#Eval("属性2")%></td>
                <td><%#Eval("属性3")%></td>
            </tr>
    </ItemTemplate>
    <FooterTemplate>
        </table>
    </FooterTemplate>
</asp:Repeater>

这里的 HeaderTemplate 是表格的头部模板,ItemTemplate 是数据项的模板,FooterTemplate 是表格的尾部模板。通过设置模板,您可以自定义表格的样式和布局。其中,Eval 函数可以获取数据项中的属性值,用于绑定数据。

在代码中,您需要将数据源绑定到 Repeater 控件中。假设您有一个名为 data 的 List<Person> 类型的数据源,您可以使用以下代码将数据源绑定到 Repeater 控件:

Repeater1.DataSource = data;
Repeater1.DataBind();

通过调用 Repeater 控件的 DataBind 方法,可以将数据源中的数据绑定到控件中,并显示在网页中。

Repeater 控件的高级应用

除了简单的数据绑定之外,Repeater 控件还提供了许多高级应用。

例如,您可以使用 Repeater 控件的 OnItemCommand 事件处理程序来处理数据项点击事件。

<asp:Repeater ID="Repeater1" runat="server" OnItemCommand="Repeater1_ItemCommand">
    <ItemTemplate>
        <asp:LinkButton ID="lnkDelete" runat="server" Text="删除" CommandName="Delete" CommandArgument='<%# Eval("ID") %>' />
    </ItemTemplate>
</asp:Repeater>

这里的 LinkButton 控件用于呈现每一行数据项中的“删除”按钮。当用户点击按钮时,会触发 Repeater 控件的 OnItemCommand 事件。您需要在代码中编写 Repeater1_ItemCommand 方法,用于处理该事件。

protected void Repeater1_ItemCommand(object source, RepeaterCommandEventArgs e)
{
    if (e.CommandName == "Delete")
    {
        int id = Convert.ToInt32(e.CommandArgument);
        // 使用 id 删除数据项
    }
}

另外,您可以使用 C# 代码生成 Repeater 控件的模板,以便更加灵活地显示数据。例如,以下代码可以动态地生成 Repeater 控件的表头模板。

Repeater1.HeaderTemplate = new CompiledTemplateBuilder(
    delegate(Control container)
    {
        Table table = new Table();
        TableRow row = new TableRow();

        table.Rows.Add(row);
        TableCell cell1 = new TableCell();
        cell1.Text = "标题1";
        row.Cells.Add(cell1);

        TableCell cell2 = new TableCell();
        cell2.Text = "标题2";
        row.Cells.Add(cell2);

        TableCell cell3 = new TableCell();
        cell3.Text = "标题3";
        row.Cells.Add(cell3);

        container.Controls.Add(table);
    });

通过编写 Delegate 委托函数,您可以动态地生成 Repeater 控件的模板,并实现完全的自定义布局。这种方法特别适用于需要在运行时根据数据动态生成布局的场景。

总之,Repeater 控件是一个非常强大的 ASP.NET Web Forms 控件,可以轻松地显示和处理数据。无论您是初学者还是有经验的 Web 开发者,都应该掌握 Repeater 控件的使用方法,以便更加高效地开发 ASP.NET Web 应用程序。