|   Member | 
                                                                            
                                                                                caspian_softdev-yahoo
                                                                            - 
                                                                                9/17/2008 8:19:59 AM
                                                                            
                                                                         
                                                                        RE:Custom Horizontal Menu 
                                                                            i send u all my work.i want to add Devexpress 8.1 menu into my project.
 my programming language is vb
 
 problem is that an error ocoures for this line of code
 
 Public prop As CMSMenuProperties=New CMSBaseProperties
 
 "type CMSBaseProperties is not defined"
 
 Imports System.Collections
 Imports System.Web
 Imports System.Web.Security
 Imports System.Web.UI
 Imports System.Web.UI.WebControls
 Imports System.Web.UI.WebControls.WebParts
 Imports System.Web.UI.HtmlControls
 
 Imports CMS.PortalControls
 Imports CMS.Controls
 Imports CMS.DataEngine
 Imports CMS.GlobalHelper
 Imports CMS.IDataConnectionLibrary
 Imports CMS.CMSHelper
 Imports CMS.ExtendedControls
 Imports CMS.TreeEngine
 
 Partial Class CMSWebParts_MyWebParts_TACMenu
 Inherits CMSAbstractWebPart
 Public prop As CMSMenuProperties=New CMSBaseProperties
 
 #Region "Public properties"
 
 
 '/// <summary>
 '/// Gets or sets the class names
 '/// </summary>
 Public Property ClassNames() As String
 Get
 Return DataHelper.GetNotEmpty(ValidationHelper.GetString(Me.GetValue("Classnames"), Me.prop.ClassNames), Me.prop.ClassNames)
 
 End Get
 Set(ByVal value As String)
 Me.SetValue("ClassNames", value)
 Me.prop.ClassNames = value
 End Set
 End Property
 
 
 Public Property CombineWithDefaultCulture() As Boolean
 Get
 Return ValidationHelper.GetBoolean(Me.GetValue("CombineWithDefaultCulture"), Me.prop.CombineWithDefaultCulture)
 End Get
 Set(ByVal value As Boolean)
 Me.SetValue("CombineWithDefaultCulture", value)
 Me.prop.CombineWithDefaultCulture = value
 End Set
 End Property
 
 
 Public Property CultureCode() As String
 Get
 Return DataHelper.GetNotEmpty(ValidationHelper.GetString(Me.GetValue("CultureCode"), Me.prop.CultureCode), Me.prop.CultureCode)
 End Get
 Set(ByVal value As String)
 Me.SetValue("CultureCode", value)
 Me.prop.CultureCode = value
 End Set
 End Property
 
 
 Public Property MaxRelativeLevel() As Int32
 Get
 Return ValidationHelper.GetInteger(Me.GetValue("MaxRelativeLevel"), Me.prop.MaxRelativeLevel)
 End Get
 Set(ByVal value As Int32)
 Me.SetValue("MaxRelativeLevel", value)
 Me.prop.MaxRelativeLevel = value
 End Set
 End Property
 
 
 
 Public Property orderBy() As String
 Get
 Return DataHelper.GetNotEmpty(ValidationHelper.GetString(Me.GetValue("OrderBy"), Me.prop.OrderBy), Me.prop.OrderBy)
 End Get
 Set(ByVal value As String)
 Me.SetValue("OrderBy", value)
 Me.prop.OrderBy = value
 End Set
 End Property
 
 
 Public Property Path() As String
 Get
 Return DataHelper.GetNotEmpty(ValidationHelper.GetString(Me.GetValue("Path"), Me.prop.Path), Me.prop.Path)
 End Get
 Set(ByVal value As String)
 Me.SetValue("Path", value)
 Me.prop.Path = value
 End Set
 End Property
 
 
 published
 Public Property SelectOnlyPublished() As Boolean
 Get
 Return ValidationHelper.GetBoolean(Me.GetValue("SelectOnlyPublished"), Me.prop.SelectOnlyPublished)
 End Get
 Set(ByVal value As Boolean)
 Me.SetValue("SelctOnlyPublished", value)
 Me.prop.SelectOnlyPublished = value
 End Set
 End Property
 
 
 Public Property SiteName() As String
 Get
 Return DataHelper.GetNotEmpty(ValidationHelper.GetString(Me.GetValue("SiteName"), Me.prop.SiteName), Me.prop.SiteName)
 End Get
 Set(ByVal value As String)
 Me.SetValue("SiteName", value)
 Me.prop.SiteName = value
 End Set
 End Property
 
 
 Public Property WhereCondition() As String
 Get
 Return DataHelper.GetNotEmpty(Me.GetValue("WhereCondition"), Me.prop.WhereCondition)
 End Get
 Set(ByVal value As String)
 Me.SetValue("WhereCondition", value)
 Me.prop.WhereCondition = value
 End Set
 End Property
 
 
 
 #End Region
 
 Protected Sub SetupControl()
 If (Me.StopProcessing) Then
 
 Me.prop.StopProcessing = True
 Else
 ' Initialize the CMSMenuProperties object
 prop.ParentControl = Me
 prop.Path = Me.Path
 prop.WhereCondition = Me.WhereCondition
 prop.SiteName = Me.SiteName
 prop.SelectOnlyPublished = Me.SelectOnlyPublished
 prop.OrderBy = Me.orderBy
 prop.CultureCode = Me.CultureCode
 prop.CombineWithDefaultCulture = Me.CombineWithDefaultCulture
 prop.ClassNames = Me.ClassNames
 prop.MaxRelativeLevel = Me.MaxRelativeLevel
 
 
 prop.ClassNames = "CMS.MenuItem"
 
 prop.DataSource = prop.GetDataSource()
 
 Dim topNodeLevel As Int32 = ValidationHelper.GetInteger(prop.DataSource.Tables(0).Rows(0)("NodeLevel"), 0)
 
 For Each dr As DataRow In prop.DataSource.Tables(0).Rows
 
 If (ValidationHelper.GetInteger(dr("NodeLevel"), 0) = topNodeLevel) Then
 
 'Get menu item nodeid (to get the child items)
 Dim nodeId As Int32 = ValidationHelper.GetInteger(dr("NodeID"), 0)
 
 ' Create menu item, add it to menu and populate it with subitems
 Dim child As New DevExpress.Web.ASPxMenu.MenuItem
 child = CreateItem(dr)
 
 menuMain.Items.Add(child)
 PopulateMenuItem(nodeId, child)
 
 
 If dr("DocumentName").ToString() = "Services" Or dr("DocumentName").ToString() = "Images" Then
 
 'child.SubMenuStyle. = ComponentArt.Web.UI.GroupOrientation.Horizontal
 
 
 If (dr("DocumentName").ToString() = "Images") Then
 
 child.SubMenuStyle.ItemSpacing = 10
 End If
 End If
 
 ' Sample code end
 
 Else
 
 Exit For
 End If
 Next
 
 End If
 End Sub
 
 Private Function CreateItem(ByVal dr As DataRow) As DevExpress.Web.ASPxMenu.MenuItem
 
 
 Dim mnuItem As DevExpress.Web.ASPxMenu.MenuItem = New DevExpress.Web.ASPxMenu.MenuItem
 
 ' Set menu caption
 mnuItem.Text = GetMenuText(dr)
 
 ' Set URL
 Dim url As String = GetURL(dr)
 If (String.IsNullOrEmpty(GetURL(dr))) Then
 ' Disable item if there is no URL
 mnuItem.Enabled = False
 Else
 mnuItem.NavigateUrl = url
 End If
 
 mnuItem.Image.Url = GetImageURL(dr, "", False, False)
 
 
 
 mnuItem.Menu.CssClass = GetCSSClass(dr, False, True)
 
 
 
 If (dr("DocumentNamePath").ToString().Contains("Images") And dr("DocumentName").ToString() <> "Images") Then
 ' Get menu item teaser
 If (dr.Table.Columns.Contains("MenuItemTeaserImage")) Then
 mnuItem.Image.Url = "getattachment/" + dr("MenuItemTeaserImage").ToString() + "/" + dr("NodeName") + ".aspx?height=100&width=120"
 End If
 
 End If
 
 
 Return mnuItem
 
 End Function
 
 Private Sub PopulateMenuItem(ByVal parentNodeId As Int32, ByVal parent As DevExpress.Web.ASPxMenu.MenuItem)
 Dim items As ArrayList = prop.GroupedDS.GetGroup(parentNodeId)
 If (items IsNot Nothing) Then
 For Each dr As DataRow In items
 Dim nodeId As Int32 = ValidationHelper.GetInteger(dr("NodeID"), 0)
 Dim child As DevExpress.Web.ASPxMenu.MenuItem = CreateItem(dr)
 PopulateMenuItem(nodeId, child)
 parent.Items.Add(child)
 Next
 End If
 End Sub
 
 Private Function GetURL(ByVal dr As DataRow) As String
 Dim url As String
 If (ValidationHelper.GetBoolean(dr("DocumentMenuItemInactive"), False)) Then
 url = ""
 ElseIf (ValidationHelper.GetString(dr("DocumentMenuRedirectUrl"), "").Trim() <> "") Then
 url = ResolveUrl(dr("DocumentMenuRedirectUrl").ToString())
 Else
 url = prop.GetItemUrl(ValidationHelper.GetString(dr("NodeAliasPath"), ""), ValidationHelper.GetString(dr("DocumentUrlPath"), ""), (dr("NodeLinkedNodeID") IsNot DBNull.Value))
 End If
 url = HttpContext.Current.Server.UrlPathEncode(url)
 Return url
 End Function
 
 Private Function GetMenuText(ByVal dr As DataRow) As String
 
 
 Dim text As String
 
 ' If DocumentMenuCaption is not specified, use DocumentName field
 If ((Not dr.Table.Columns.Contains("DocumentMenuCaption")) Or (dr("DocumentMenuCaption") Is DBNull.Value) Or (dr("DocumentMenuCaption").ToString() = "")) Then
 
 text = dr("DocumentName").ToString()
 
 Else
 
 text = dr("DocumentMenuCaption").ToString()
 End If
 
 Return text
 
 End Function
 
 Private Function GetImageURL(ByVal dr As DataRow, ByVal type As String, ByVal hoverImage As Boolean, ByVal activeImage As Boolean) As String
 
 ' Ensure correct type (if type parameter is wrong, then use centre image)
 If type = "" Then
 type = ""
 Else
 type = type.ToLower
 End If
 If (type <> "right" And type <> "left") Then
 type = ""
 End If
 
 ' Get correct Column name
 Dim columnname As String = "DocumentMenuItem" + type + "Image" + (IIf(hoverImage, "Over", ""))
 
 If (Not hoverImage And activeImage) Then
 columnname += "Highlighted"
 End If
 
 ' Get URL
 Dim url As String = dr(columnname).ToString()
 
 ' If there is no image return null otherwise retrun the url
 'return (url = "" ? null : url)
 Return IIf(url = "", Nothing, url)
 End Function
 
 Private Function GetCSSClass(ByVal dr As DataRow, ByVal hoverImage As Boolean, ByVal activeImage As Boolean) As String
 
 
 ' Get correct Column name
 Dim columnname As String = "DocumentMenuClass" + (IIf(hoverImage, "Over", ""))
 If (Not hoverImage And activeImage) Then
 columnname += "Highlighted"
 End If
 
 ' Get name
 Dim name As String = dr(columnname).ToString()
 
 ' If there is no class return null otherwise retrun the name
 Return (IIf(name = "", Nothing, name))
 
 End Function
 
 Public Overrides Sub OnContentLoaded()
 MyBase.OnContentLoaded()
 SetupControl()
 End Sub
 
 Protected Sub Page_Init(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Init
 prop = New CMSBaseProperties
 End Sub
 End Class
 
 
                                                                            
                                                                         
 
                                                                            
                                                                            
                                                                            
                                                                            
                                                                            
                                                                         
                                                                            
                                                                            
                                                                            
                                                                            
                                                                         
                                                                         |