2012-03-02 22 views
0

私は実際にページ上のすべてを生成するコードであるWebサイトを持っています。ホームページは、コードを介して構築されている右メニューで構成されています。 System.Web.UI.WebControls.TableCellクラスを使用して、新しい項目ごとにtdを作成します。System.Web.UI.WebControls.TableCellに代わります

Public Sub BuildMainMenuStructure(ByVal Cell As TableCell, _ 
            ByVal Contents As DataTable, _ 
            ByVal ReadMode As Boolean, _ 
            ByVal CurrentPage As String, _ 
            ByVal RecSecurity As ApplicationRoleSecurity, _ 
            ByVal SourcePageRef As Integer, _ 
            ByVal IncludeMyIntranetPanel As Boolean) 

    '----------------------------------------------------------------- 
    'Div1 Contents 
    '----------------------------------------------------------------- 
    'Set up the contents in a div (panel) called pnlMainMenu1 
    Dim mmContents As New MainMenuContents 
    mmContents.ID = "pcaMainMenuContents" 
    mmContents.SetControl(Contents, _ 
          ReadMode, _ 
          CurrentPage, _ 
          RecSecurity, _ 
          SourcePageRef) 

    mintContentsCount = mmContents.Count 

    Dim pnlMainMenu1 As New Panel 
    With pnlMainMenu1 
     .ID = "pcaMainMenuContentsPanel" 
     'By default, this panel is visible: 
     .Style.Add("visibility", "visible") 
     .Controls.Add(mmContents) 
    End With 

コード内の別の領域では、ホームページの異なるセクションが生成される:

If IncludeMyIntranetPanel And ReadMode Then 

     'Set up the contents in a div (panel) called pnlMainMenu2 
     Dim mmMyIntranet As New MainMenuMyIntranet 
     mmMyIntranet.ID = "pcaMainMenuMyIntranet" 
     mmMyIntranet.SetControl(Contents, _ 
           ReadMode, _ 
           CurrentPage, _ 
           RecSecurity, _ 
           SourcePageRef) 

     Dim pnlMainMenu2 As New Panel 
     With pnlMainMenu2 
      .ID = "pcaMainMenuMyIntranetPanel" 
      'By default, this panel is visible: 
      .Style.Add("visibility", "visible") 
      .Controls.Add(mmMyIntranet) 
     End With 

     'Add it to the cell: 
     Cell.Controls.Add(pnlMainMenu2) 

    End If 'End If IncludeMyIntranetPanel 

そのCell.Controlsを介してコンテンツを追加ここ

は、コードスニペットです。追加(pnlMainMenu2)

私はホームページを再スキンすることを任されています。理想的には、DIVクラスを生成してコンテンツを簡単に配置することができます。

データベースからデータを取得してdivクラスを作成するために使用できる.netクラスはありますか?

答えて

2

選択肢はありますが、どちらを使用するかは、正確に何を達成しようとしているか、使用している.NETのバージョンによって大きく異なります。

Panel control実際に出力divはページに表示されますが、唯一の要件が「divを出力したい」場合は、私はそれをお勧めしますか? ASP.NETを使用して、コントロールに含まれるコントロールの可視性などを制御する必要があります。ただし、既存のサイトでは、おそらくTableCellコントロールに最も近い「ドロップイン」置き換えです。

Literal controlは.NETのほとんどのバージョンに存在し、画面に出力される内容を完全に制御できますが、Panelコントロールと同様にデータバインドコントロールではありません。あなたはコードビハインドであなたの情報を入手し、それを使って好きなものをあなたのリテラルの.Textに追加する必要があります。これの欠点は、コードビハインドからページに欲しいHTMLを正確にダンプすることがASP.NETのやり方に逆らっていることです。

ListView controlは、実際にはデータバインドされたコントロールです。何らかのタイプのデータベース接続を行い、結果をループしてリストを表示します。そのリストに出力されているHTMLを合理的に完全に制御できるので、divs、lisなどを使用することができますが、表示するものを決定する際に論理を使用するのは難しいでしょう。 (以前の関連するコントロールthe Repeaterがありますが、使用するのがよりクルージングですが、以前のバージョンの.NETにあります)

+1

私は少し言い方を変えていましたが、リテラルコントロールには、データベースインタラクションの任意の形式が組み込まれています。あなたのデータベースを処理し、コードビハインドを介して出力を追加する必要があります。また、Panelコントロールは実際にはTableCellと異なり、DIVを出力しますが、実際にテキストを出力するにはLabelやHyperLinkなどのコントロールを追加する必要があります。 –

+0

私が作業しているサイトの問題は、すべてがデータベース/コードが生成されていることを参照してください。私は、開発者が実際にどこのスタイルシートを知っていたとは思わない!ホームページの再スキニングの話がありますが、新しいデザインでホームページをスキニングするのではなく、「もの」のアロケーションが続いています。 –