Avatar billede stinejh1980 Nybegynder
27. oktober 2009 - 11:29 Der er 1 løsning

AJAX tabs med onclick event

Jeg har til opgave at lave en menu med 2 niveauer - der har relationer ved hjælp af parent child i et dataset.

Jeg har forsøgt forskellige måde at løse denne opgave, og er nu i gang med at forsøge mig med AJAX tabs. Menuen med Tabs bliver dannet dynamisk i et usercontrol, som er placeret på min masterPage.

I denne proces er jeg stødt på et problem mht. onclick på tabs. Når jeg navigerer bliver min usercontrol reloaded og derved kan tabs ikke huske ActiveTabIndex.

Jeg havde forestillet mig noget med at gemme ID på den valgte Tab og når siden så reloader, så læses ID'et, men jeg kan ikke få tilføjet et Event der skal ske når man klikker på en ny tab.

Jeg har læst så meget nu at jeg ikke ved hvor jeg skal starte og begynde. Nogle nævner at man skal brug for registerStartupScript, andre siger at man kan hente vha. java:
function ActiveTabChanged(sender, e) {
var activeTab = $get('<%=activeTab.ClientID%>');
activeTab.value = sender.get_activeTabIndex();
}
Men ingen af dele kan jeg finde nogle eksempler der hjælper mig videre - da alt er C#

Nogen der har noget erfaring med AJAX tabs og VB de gerne vil dele ud af?
Avatar billede stinejh1980 Nybegynder
12. november 2009 - 13:15 #1
Løste det på følgende måde:

    Public Sub CreateMenu()

        Dim MyMenuDS As DataSet = GetDataSetForMenu()
        Dim parentItem As DataRow
        Dim childItem As DataRow
        Try
            TabContainer = New AjaxControlToolkit.TabContainer
            TabContainer.ID = "MyTabContainer"
           
            For Each parentItem In MyMenuDS.Tables("MenuLow_Tbl").Rows
                'If parentItem.GetChildRows("Children").Length = 0 Then
                TabPanel = New AjaxControlToolkit.TabPanel
                TabPanel.ID = "TabPanel" & CStr(parentItem("MenuID"))
                TabPanel.HeaderText = "<a href='" & _
                CStr(parentItem("NavigateURL")) & "?Page=" & _
                CStr(parentItem("OrderBy")) & "&Sub=0'>" & _
                CStr(parentItem("MenuText")) & "</a>"
                'Else
                'TabPanel = New AjaxControlToolkit.TabPanel
                'TabPanel.ID = "TabPanel" & CStr(parentItem("MenuID"))
                'TabPanel.HeaderText = CStr(parentItem("MenuText"))
                'End If

                For Each childItem In parentItem.GetChildRows("Children")
                    Try
                        TabContent = New Label
                        TabContent.ID = "TabContent" & CStr(childItem("SubMenuID"))
                        TabContent.Width = 86
                        TabContent.CssClass = "MySubMenuItem"
                        'TabContent.Text = CStr(childItem("SubMenuText"))
                        'If Left(childItem("NavigateURL"), 8) = "Products" Then
                        'TabContent.Text = "<a href='" & CStr(childItem("NavigateURL")) & "&Page=" & _
                        'CStr(parentItem("OrderBy")) & "&Sub=1'>" & _
                        'CStr(childItem("SubMenuText")) & "</a>"
                        'Else
                        TabContent.Text = "<a href='" & CStr(childItem("NavigateURL")) & "?Page=" & _
                        CStr(parentItem("OrderBy")) & "&Sub=1'>" & _
                        CStr(childItem("SubMenuText")) & "</a>"
                        'End If
                        TabPanel.Controls.Add(TabContent)
                    Catch ex As Exception
                        Response.Write(ex.ToString)
                    End Try
                Next childItem
                TabContainer.Tabs.Add(TabPanel)
            Next parentItem
        Catch ex As Exception
            Response.Write(ex.ToString)
        End Try
        PHTabs.Controls.Add(TabContainer)
    End Sub

    Private Function GetDataSetForMenu() As DataSet
        MySQL_Main = "SELECT * FROM MenuLow_Tbl ORDER BY OrderBy;"
        Dim adMainMenu As New SqlDataAdapter(MySQL_Main, MyConnection)

        MySQL_Sub = "SELECT * FROM dbo.MenuLowSub_Tbl ORDER BY OrderBy;"
        Dim adSubMenu As New SqlDataAdapter(MySQL_Sub, MyConnection)

        Dim ds As New DataSet()
        adMainMenu.Fill(ds, "MenuLow_Tbl")
        adSubMenu.Fill(ds, "dbo.MenuLowSub_Tbl")
        ds.Relations.Add("Children", ds.Tables("MenuLow_Tbl").Columns("MenuID"), ds.Tables("dbo.MenuLowSub_Tbl").Columns("MenuID"))
        Return ds
    End Function 'GetDataSetForMenu
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