Principales respuestas
Menu DInamico

Pregunta
-
Hola a todos estoy metido ene un problema.
Tengo un control Menu en una MasterPage
<
asp:Menu ID="menu" runat ="server"
OnMenuItemClick ="menu_MenuItemClick"
StaticMenuItemStyle-CssClass ="MenuUp" >
y lo estoy llenado asi
DataTable
dt = executaSP("sp_consulta_items_menu");
MenuItem mItem;
foreach (DataRow dr in dt.Rows)
{
mItem =
new MenuItem(dr.ItemArray[0].ToString(), dr.ItemArray[1].ToString());
menuPrincipal.Items.Add(mItem);
}
SI me lo llena el problema es que como pirmer item me pone uno vacio que tiene como referencia:
y al final otro que esta deshabilitado en medio de ellos me pone los que le carga la dt.
menu_SkipLink
Datos
Contactanos
Acerca de
empety
Esto lo hace incluso sin ponerle ningun estylo
Alguein sabe que puedo hacer?
oxtibu-Mexico
Respuestas
-
hola,
consulta porque accedes a los roy del datatable haciando uso de la propiedad "ItemArray".
el objeto DataRow, puede acceder a cada columna si le ingresas el nombre de la misma.
dr["id"].ToString()
o dr["descripcion"].ToString()
recuerda que la declaracion del objeto mItem, tambien puede ir dentro del loop foreach:
foreach (DataRow dr in dt.Rows)
{
MenuItem mItem mItem = new MenuItem(dr[0].ToString(), dr[1].ToString());
menuPrincipal.Items.Add(mItem);
}
saludos
Leandro Tuttini
Work: Iceberg Solutions
Blog
Buenos Aires
Argentina- Marcado como respuesta oxtibu jueves, 25 de junio de 2009 15:58
Todas las respuestas
-
hola,
consulta porque accedes a los roy del datatable haciando uso de la propiedad "ItemArray".
el objeto DataRow, puede acceder a cada columna si le ingresas el nombre de la misma.
dr["id"].ToString()
o dr["descripcion"].ToString()
recuerda que la declaracion del objeto mItem, tambien puede ir dentro del loop foreach:
foreach (DataRow dr in dt.Rows)
{
MenuItem mItem mItem = new MenuItem(dr[0].ToString(), dr[1].ToString());
menuPrincipal.Items.Add(mItem);
}
saludos
Leandro Tuttini
Work: Iceberg Solutions
Blog
Buenos Aires
Argentina- Marcado como respuesta oxtibu jueves, 25 de junio de 2009 15:58
-
Hola oxtibu
(Agregando a lo que te comenta Leandro...)
Tenia un codigo de ejemplo asi que te lo copio para que te sirva de "ejemplo a seguir" o para ver como seria...
Supongamos que tenemos una clasePublic Class Seccion Public Id As Integer Public Nombre As String Public PadreId As Integer Public Sub New(ByVal Id As Integer, ByVal Nombre As String, ByVal PadreId As Integer) Me.Id = Id Me.Nombre = Nombre Me.PadreId = PadreId End Sub End Class
Luego en nuestra pagina generamos(Imports System.Collections)''' <summary> ''' Generar Secciones. ''' Ejemplo: ''' Item 1 ''' Item 1.1 ''' Item 1.2 ''' Item 1.3 ''' </summary> ''' <remarks></remarks> Private Sub SeccionesGenerar() For i As Integer = 1 To 3 Dim s1 As New Seccion(i, "Item " & i.ToString, i) _secciones.Add(s1) For j As Integer = 1 To 3 Dim id As Integer = 1 Dim cadena As String = i.ToString & "." & j.ToString Dim s2 As New Seccion(i + j, "Item " & cadena, i) _secciones.Add(s2) Next Next End Sub
Los metodos son algo asiPrivate Sub MenuArmar() Dim idPadreAnterior As Integer = 0 Dim padreItem As MenuItem = Nothing Dim seccionItem As MenuItem For Each seccion As Seccion In _secciones If idPadreAnterior <> seccion.PadreId Then padreItem = MenuItemAgregar(seccion, enuTipoItemMenu.Grupo, padreItem) idPadreAnterior = seccion.PadreId Else seccionItem = MenuItemAgregar(seccion, enuTipoItemMenu.Seccion, padreItem) End If Next End Sub
Private Function MenuItemAgregar(ByVal seccion As Seccion, ByVal tipo As enuTipoItemMenu, ByVal padreItem As MenuItem) As MenuItem Dim Item As New MenuItem Dim pagina As String = Request.Url.AbsolutePath Select Case tipo Case enuTipoItemMenu.Grupo Item.Text = seccion.Nombre Item.NavigateUrl = String.Format("{0}?secciongrupoid={1}", pagina, seccion.Id) Item.ToolTip = String.Empty mnuMenuPrincipal.Items.Add(Item) Case enuTipoItemMenu.Seccion Item.Text = seccion.Nombre Item.NavigateUrl = String.Format("{0}?seccionid={1}", pagina, seccion.Id) Item.ToolTip = String.Empty padreItem.ChildItems.AddAt(0, Item) End Select Return (Item) End Function
Y en el load de la pagina simplementeSeccionesGenerar()MenuArmar()Enlaces:------------------------------MenuItem (Constructor)Inicializa una nueva instancia de la clase MenuItem utilizando los datos de texto de menú, valor, dirección URL de una imagen, dirección URL de desplazamiento y destino especificados.MenuItem.ChildItems (Propiedad)Obtiene un objeto MenuItemCollection que contiene los elementos de submenú del elemento de menú actual.Populating Menu Control in ASP.NET 2.0 - using different data sources- Populating the Menu using SiteMapDataSource- Populating the Menu using the Database- Populating the Menu Control Using an XML FileEspero que te sirva de ayuda o guia
Jose. A Fernandez | blog: http://geeks.ms/blogs/fernandezja -
-
Hola mira lo tengo de manera siilar
si me lopone
el problema es que me antepone
un item vacio, luego los items que le paso , y me termina con otro item vacio,
Elprimer ahytem vacio , solo ,me refresca la pagina, el segun item esta deshabilitado.
oxtibu-Mexico -