2017-07-18 109 views
1

我正在尝试更新此网站。我在旧风格生成的报告表所示:将ASP经典表转换为ASP.NET直放站

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

我转换到这个中继器,但我在一个不知如何以包括会话数据。我有:

<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中。

回答

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"]; 
    } 
} 

你也可以做的事情与页脚,项目d在这里交替的项目也是如此。