将 ASP 经典 table 转换为 ASP.NET Repeater

Converting ASP classic table to ASP.NET Repeater

我正在努力使这个网站现代化。我有一份报告 table 正在以旧样式生成,例如:

Dim sTable = "<table class=""stat"">"
sTable = sTable & "<thead><tr><th colspan=20><Status Report: " & Session("ProcessYear") & "</th></tr>"

我正在将其转换为 Repeater,但我不知道如何在 <HeaderTemplate> 中包含会话数据。我有:

<asp:Repeater id="Dashboard" runat="server">
<HeaderTemplate>
    <table class="stat">
        <thead>
            <tr><th colspan="20">Appeal Status Report: ???? </th></tr>
...

一些候选者是 asp:PlaceHolder,以及类似 <%# ((RepeaterItem)Container.Parent.Parent).DataItem %> 的东西(参见 Accessing parent data in nested repeater, in the HeaderTemplate),但我不知道它指的是什么。

不幸的是,无法重构会话依赖项。有什么想法吗?我是 ASP.NET 的新手。此页面的代码文件位于 VB.NET.

您需要查看 On Item Data Bound event,以便您可以在绑定期间执行一些代码隐藏工作。

您需要检查项目对象,确定 its a header row, 然后访问您的会话对象。

粗略的改编可能如下所示:

ASPX

<asp:Repeater id="Dashboard" runat="server" OnItemDataBound="ItemDataBound">
<HeaderTemplate>
    <table class="stat">
        <thead>
            <tr>
                <th colspan="20">
                    Appeal Status Report: <asp:Label ID="YourLabel"/>
                </th>
            </tr>
        ...
    ...
...

Code Behind

void ItemDataBound(Object Sender, RepeaterItemEventArgs e) 
{
    if (e.Item.ItemType == ListItemType.Header) 
    {
        ((Label)e.Item.FindControl("YourLabel")).Text = Session["YourSession"];
    }
}

您也可以在此处对页脚、项目和交替项目进行操作。