Avatar billede stinejh1980 Nybegynder
22. juni 2009 - 11:08 Der er 1 løsning

Asp.net Menu og CollapsiblePanelExtender

Jeg har en side med 2 horisontale menuer.

Den nederste har jeg ingen problemer med da den navigerer v.h.a. response.redirect("minside.aspx")

Den øverste vil jeg ikke have til at navigere på samme måde.
Jeg har tilføjet en CollapsiblePanelExtender til det panel som mine menuitems bliver loaded dynamisk ind i. Når brugerne klikker på et menuitem skal panelet folde ned og afhængigt af hvad de har trykket på skal panelet fyldes med data fra SQL databasen. Panelet lukker først igen når brugerne trykker luk knappen.

Mit problem er at jeg kan ikke får menuen til at virke når først jeg har implemeneteret funktionerne fir CPE.

Jeg kan sagtens loade data fra DB ind i panelet, men ikke afhængigt af det valgte menuitem, da den af en eller anden mærkelig grund bliver disabled.

Nogen der kan hjælpe - jeg koder i asp.net og VB.net

ASPX side:
<%@ Control Language="vb" AutoEventWireup="false" CodeBehind="MenuTop.ascx.vb" Inherits="ElvWeb.MenuTop" %>
<%@ Register assembly="AjaxControlToolkit" namespace="AjaxControlToolkit" tagprefix="cc1" %>
<asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
<link href="Style.css" rel="stylesheet" type="text/css" />
<asp:Label ID="LblMessage" runat="server" CssClass="ErrorMessage"></asp:Label>
<div ID="Size_TopMenu">
<asp:Panel ID="MenuPanel" runat="server" CssClass="collapsePanelHeader" HorizontalAlign="Right"></asp:Panel>
    <cc1:CollapsiblePanelExtender ID="cpe"
                runat="server"
                TargetControlID="ContentPanel"
                ExpandControlID="MenuPanel"
                CollapseControlID="BtnClose"
                Collapsed="True"
                SuppressPostBack="true">
    </cc1:CollapsiblePanelExtender>
<asp:Panel ID="ContentPanel" runat="server" CssClass="collapsePanel"></asp:Panel>
</div>


VB side:
Public Partial Class MenuTop
    Inherits System.Web.UI.UserControl

    Dim MyCommand As New SqlCommand
    Dim MyConnection As New SqlConnection
    Dim MyDA As New SqlDataAdapter
    Dim MyReader As SqlDataReader
    Dim MyDS As DataSet
    Dim MySQL, MySQL_Main, MySQL_Sub As String

    Dim MyTabel As Table
    Dim TblRow As TableRow
    Dim TblCell As TableCell
    Dim MyLabel As Label
    Dim MyButton As LinkButton


    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        Dim conn As String = System.Configuration.ConfigurationManager.AppSettings("WebConn")
        MyConnection = New SqlConnection(conn)
        MyConnection.Open()

        If Not Page.IsPostBack Then
            Call PopulateMenu()
            'Call FillInfo()
        End If
    End Sub

    Private Sub PopulateMenu()
        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.Items.Add(MainMenuItem)

            For Each parentItem In ds.Tables("MenuMain_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.Items.Add(MainMenuItem)
            Next parentItem

            menu.Orientation = Orientation.Horizontal
            '1st level menu styles
            menu.StaticPopOutImageUrl = "gfx/nav_arrow_down_White_red.jpg"
            menu.StaticMenuItemStyle.CssClass = "MainMenu"
            menu.StaticHoverStyle.CssClass = "MainMenuHover"
            '2nd level menu styles
            menu.DynamicPopOutImageUrl = "gfx/nav_arrow_down_White_red.jpg"
            menu.DynamicMenuItemStyle.CssClass = "SubMenu"
            menu.DynamicHoverStyle.CssClass = "SubMenuHover"

        Catch ex As Exception
            LblMessage.Text = ex.ToString
            Response.Write(MySQL)
        End Try

        MenuPanel.Controls.Add(menu)
        MenuPanel.DataBind()
    End Sub 'PopulateMenu

    Private Function GetDataSetForMenu() As DataSet
        MySQL_Main = "SELECT * FROM MenuMain_Tbl order by orderby;"
        Dim adMainMenu As New SqlDataAdapter(MySQL_Main, MyConnection)

        MySQL_Sub = "SELECT * FROM dbo.MenuMainSub_Tbl;"
        Dim adSubMenu As New SqlDataAdapter(MySQL_Sub, MyConnection)

        Dim ds As New DataSet()
        adMainMenu.Fill(ds, "MenuMain_Tbl")
        adSubMenu.Fill(ds, "dbo.MenuMainSub_Tbl")
        ds.Relations.Add("Children", ds.Tables("MenuMain_Tbl").Columns("MenuID"), ds.Tables("dbo.MenuMainSub_Tbl").Columns("MenuID"))
        Return ds
    End Function 'GetDataSetForMenu

    Public Sub FillInfo()
        MyTabel = New Table

        MyDS = New DataSet
        MyCommand = New SqlCommand
        MySQL = "SELECT Staff_Tbl.StaffID, Staff_Tbl.DepartmentID, Staff_Tbl.StaffName, Staff_Tbl.StaffTitle, Staff_Tbl.StaffPhone, Staff_Tbl.StaffEmail, Staff_Tbl.ImageData, Department_Tbl.Department FROM Staff_Tbl INNER JOIN Department_Tbl ON Staff_Tbl.DepartmentID = Department_Tbl.DepartmentID WHERE (Staff_Tbl.DepartmentID = 7)"
        MyCommand.CommandText = MySQL
        MyCommand.Connection = MyConnection
        MyReader = MyCommand.ExecuteReader
        While MyReader.Read
            Dim myStaffID As String = MyReader("StaffID")

            TblRow = New TableRow
            TblCell = New TableCell
            If IsDBNull(MyReader("ImageData")) Then
                TblCell.Text = "<img src='images/NoPicture.jpg' />"
            Else
                TblCell.Text = "<img alt='Image_" & myStaffID & "' src='Image.aspx?ImgID=" & myStaffID & "&Tbl=Staff_Tbl&ColID=StaffID' />"
            End If
            TblCell.Attributes.Add("Rowspan", 4)
            TblRow.Cells.Add(TblCell)
            MyTabel.Rows.Add(TblRow)

            TblCell = New TableCell
            If Not IsDBNull(MyReader("StaffName")) Then TblCell.Text = "<H3>" + MyReader("StaffName") + "</H3>"
            TblCell.Attributes.Add("Colspan", 2)
            TblRow.Cells.Add(TblCell)
            MyTabel.Rows.Add(TblRow)

            TblRow = New TableRow
            TblCell = New TableCell
            If Not IsDBNull(MyReader("StaffTitle")) Then TblCell.Text = MyReader("StaffTitle")
            TblCell.Attributes.Add("Colspan", 2)
            TblRow.Cells.Add(TblCell)
            MyTabel.Rows.Add(TblRow)

            TblRow = New TableRow
            TblCell = New TableCell
            TblCell.Text = "Phone: "
            TblRow.Cells.Add(TblCell)
            TblCell = New TableCell
            If Not IsDBNull(MyReader("StaffPhone")) Then TblCell.Text = MyReader("StaffPhone")
            TblRow.Cells.Add(TblCell)
            MyTabel.Rows.Add(TblRow)

            TblRow = New TableRow
            TblCell = New TableCell
            TblCell.Text = "E-mail: "
            TblRow.Cells.Add(TblCell)
            TblCell = New TableCell
            If Not IsDBNull(MyReader("StaffEmail")) Then TblCell.Text = MyReader("StaffEmail")
            TblRow.Cells.Add(TblCell)
            MyTabel.Rows.Add(TblRow)

            TblRow = New TableRow
            TblCell = New TableCell
            TblCell.Text = "</br>"
            TblCell.Attributes.Add("Colspan", 3)
            TblRow.Cells.Add(TblCell)
            MyTabel.Rows.Add(TblRow)

        End While
        MyReader.Close()

        'MyTabel.Attributes.Add("Border", 1)

        ContentPanel.Controls.Add(MyTabel)
        Dim MyButton As New LinkButton
        MyButton.Text = "Close"
        MyButton.ID = "BtnClose"
        ContentPanel.Controls.Add(MyButton)

        MyConnection.Close()
    End Sub
End Class
Avatar billede stinejh1980 Nybegynder
03. juli 2009 - 09:08 #1
Lukker - droppede denne extender og anvendte visible true/false på et updatepanel istedet.
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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