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?
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