2012-03-02 29 views
0

我有一个网站,它是代码几乎可以生成页面上的所有内容。主页由正在通过代码构建的右侧菜单组成。它使用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类,以便轻松定位内容。

是否有一个.net类,我可以使用它从数据库中抓取数据并创建div类?

回答

2

当然,还有其他选择,但决定使用哪一个取决于您正在尝试完成的内容以及您使用的.NET版本。

Panel control其实输出div到页面,但如果你唯一的要求是“我要输出div”,我不知道我会推荐它 - 我坚持面板当我需要使用ASP.NET来控制它包含的控件的可见性。但是,对于现有的网站,它可能是TableCell控件最接近的“放入”替代品。

Literal control存在于.NET的大多数版本中,可让您全面控制输出到屏幕的内容,但与面板控件一样,它不是数据绑定控件;你需要在代码隐藏中获取你的信息,用它来添加任何你喜欢的文字的.Text。这样做的缺点是,将我们想要的HTML代码转换为代码隐藏的页面会违背ASP.NET的方式。

ListView control实际上是一个数据绑定控件 - 您给它一个某种类型的数据库连接,它会遍历结果并显示一个列表。您可以完全控制列表中输出的HTML,因此您可以使用div,lis等,但使用逻辑来确定要显示的内容会更棘手(尽管几乎不可能)。 (有一个更早的,相关的控制,这是更可用,但存在于早期版本的.NET)

+1

我在那里有点罗嗦,但我觉得我应该重申:既不是面板控制也不是文字控制有任何形式的数据库交互内置;你需要做你的数据库的东西,并通过代码隐藏添加输出。此外,Panel控件实际上并不采用文字,与TableCell不同 - 是的,它会输出DIV,但您需要添加一个Label或HyperLink等控件来实际输出文字。 – 2012-03-02 16:27:39

+0

看到我正在使用的网站的问题是一切都是数据库/代码生成。我不认为开发人员知道哪些样式表在哪里!有关于“重新剥皮”主页的讨论,但很多“东西”仍在继续,所以它不是用新设计剥离主页的情况。 – 2012-03-02 16:36:39