Avatar billede stinejh1980 Nybegynder
14. september 2009 - 12:14 Der er 3 kommentarer og
1 løsning

Dynamic Menu Items - ASP.NET

Jeg bruger ASP.Net og VB

Jeg har en ASP menu:
Dim ds As DataSet = GetDataSetForMenu()
        Dim menu As New Menu()
        Dim MainMenuItem As New MenuItem
        Dim SubMenuItem As New MenuItem

        Dim parentItem As DataRow
        Try
            MainMenuItem = New MenuItem("|")
            'menu.CssClass = "VerticalLine"
            menu.Items.Add(MainMenuItem)

            For Each parentItem In ds.Tables("MenuLow_Tbl").Rows
                MainMenuItem = New MenuItem(CStr(parentItem("MenuText")))
                MainMenuItem.NavigateUrl = CStr(parentItem("NavigateUrl"))
                menu.Items.Add(MainMenuItem)

                Dim childItem As DataRow
                For Each childItem In parentItem.GetChildRows("Children")
                    SubMenuItem = New MenuItem(CStr(childItem("SubMenuText")))
                    SubMenuItem.NavigateUrl = CStr(childItem("NavigateUrl"))
                    MainMenuItem.ChildItems.Add(SubMenuItem)
                Next childItem

                MainMenuItem = New MenuItem("|")
                'menu.StaticMenuItemStyle.CssClass = "VerticalLine"
                'menu.DynamicMenuItemStyle.CssClass = "VerticalLine"
                menu.Items.Add(MainMenuItem)
            Next parentItem

            menu.Orientation = Orientation.Horizontal
            '1st level menu styles
            menu.StaticPopOutImageUrl = "gfx/nav_arrow_down.gif"
            menu.StaticMenuItemStyle.CssClass = "MainLow"
            menu.StaticHoverStyle.CssClass = "MainLowHover"
            '2nd level menu styles
            menu.DynamicPopOutImageUrl = "gfx/nav_arrow_down.gif"
            menu.DynamicMenuItemStyle.CssClass = "SubLow"
            menu.DynamicHoverStyle.CssClass = "SubLowHover"
        Catch ex As Exception
            LblMessage.Text = ex.ToString
            Response.Write(MySQL)
        End Try

        Panel1.Controls.Add(menu)
        Panel1.DataBind()

Med følgende CSS:
.MainLow
{
    font-family: Arial, 'Apex New Book' , Verdana, Tahoma, Sans-Serif;
    font-size: 12px;
    color: #ff0000;
    z-index: 2;
    padding: 5px 1px 5px 1px;
    margin: 0px;
}
.MainLowHover
{
    font-family: Arial, 'Apex New Book' , Verdana, Tahoma, Sans-Serif;
    font-size: 12px;
    color: #000000;
    z-index: 2;
    padding: 5px 1px 5px 1px;
    margin: 0px;
}

.SubLow
{
    padding: 2px 2px 2px 2px;
    margin: 0px;
    font-family: Arial, 'Apex New Book' , Verdana, Tahoma, Sans-Serif;
    font-size: 12px;
    color: #FF0000;
    background-color: #c0c0c0;
    border-bottom: #ffffff 1px solid;
    z-index: 5;
    white-space: normal;
}
.SubLowHover
{
    padding: 2px 2px 2px 2px;
    margin: 0px;
    font-family: Arial, 'Apex New Book' , Verdana, Tahoma, Sans-Serif;
    font-size: 12px;
    color: #000000;
    background-color: #c0c0c0;
    border-bottom: #ffffff 1px solid;
    z-index: 5;
    white-space: normal;
}

I IE8 vises childitems ikke. Er der nogen der ved hvorfor?
Hvis jeg trykker på kompatibilitetsvisning virker det.

/Stine
Avatar billede crazysnap Seniormester
14. september 2009 - 12:45 #1
Hej Elvstine,

Jeg havde samme problem for noget tid siden og brugte fix 1 (Overriding the z-index property) fra denne her side:

http://blogs.msdn.com/giorgio/archive/2009/02/01/asp-net-menu-and-ie8-rendering-white-issue.aspx

Så prøv at sæt "z-index: 100;" på DynamicMenuStyle og se om det løser problemet.  :)

/CS
Avatar billede stinejh1980 Nybegynder
16. september 2009 - 13:35 #2
Det var faktisk ingen af delen som du omtaler.
Hvis man kigger på min codebehind kan man se at jeg genererer mine menuitems dynamisk, og det var i denne forbindelse jeg havde sat CSS forkert.

Det ser nu således ud:
            menu.DynamicPopOutImageUrl = "gfx/nav_arrow_down.gif"
            menu.DynamicMenuItemStyle.CssClass = "SubLow"
            menu.DynamicMenuStyle.CssClass = "SubLow"
            menu.DynamicHoverStyle.CssClass = "SubLowHover"

Altså havde jeg kun skrevet DynamicMenuItemStyle og ikke DynamicMenuStyle.

CrazySnap>>> Smid et svar, for det var dig der guidede mig i denne retning.
Avatar billede crazysnap Seniormester
16. september 2009 - 14:54 #3
Godt du fik det løst, jeg samler ikke på point, så snup du dem bare selv. :)

Ja, du opbygger menuen generisk, hvilket stadig bringer dig i præcis samme problemstilling som beskrevet i det link jeg sendte dig. Menuen burde stadig ikke blive vist korrekt i IE8 medmindre du tilføjer et z-index til stylen for DynamicMenuStyle. 

Du løste det så ved at tilføje "SubLow" stylen til DynamicMenuStyle, og det er jo også helt fint da z-index: 5 gør er menuen vises korrekt. Hvis du tilgengæld fjernede z-index: 5 fra "SubLow", burde din menu igen blive vist forkert. :)

Men jeg er glad for at høre det hele virker nu.

Mvh.
CS
Avatar billede stinejh1980 Nybegynder
17. september 2009 - 08:18 #4
Ja det med Z-index fandt jeg hurtigt ud af, så det har jeg tilføjet på næsten alle mine styles.

Det kan godt irritere mig at en opgradering af IE kan give så mange problemer. Kan også se på de fleste af de portaler jeg bruger i forbindelse med mit arbejde at de skriver en vejledning til hvordan man bruger siden hvis man har opgraderet i IE8.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester