我正在努力使这个网站现代化。我有一个以旧样式生成的报告表,如:
Dim sTable = "<table class=""stat"">"
sTable = sTable & "<thead><tr><th colspan=20><Status Report: " & Session("ProcessYear") & "</th></tr>"
我正在将其转换为转发器,但我不知道如何在<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很新。我的这个页面的CodeFile是在VB.NET中。
答案 0 :(得分:1)
您需要查看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>
...
...
...
背后的代码
void ItemDataBound(Object Sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Header)
{
((Label)e.Item.FindControl("YourLabel")).Text = Session["YourSession"];
}
}
您也可以使用页脚,项目和交替项目进行操作。