2017-07-18 11 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に新しいです。このページのMy 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項目を交互に表示します。

関連する問題