nombre de un menu

27/06/2005 - 19:29 por Miko_tnt | Informe spam
tengo el siguiente problema, tengo una funcion que recibe un menu y una
hashtable y quiero recorrer todo el menu y al mismo tiempo la hash table y
preguntar que cuando el nombre del menu sea igual a la clave de la tabla haga
la propiedad text igual a la descripcion de la tabla

tengo este codigo pero no funciona, por favor agradezko kuakier ayuda

Public Function Generar_Menu(ByVal mm As menu, ByVal tabla As Hashtable) As
menu
Dim menui As MenuItem
Dim elemento As New DictionaryEntry()
For Each menui In mm.MenuItems
For Each elemento In tabla
If (tabla.ContainsKey(menui.nombredelmenu) Then
menui.Text = tabla.Item(menui.nombredelmenu)
End If
Next
Next
End Function

Preguntas similare

Leer las respuestas

#6 Miko_tnt
28/06/2005 - 17:42 | Informe spam
Si por alguna razon no existe un menu que tenga komo nombre un registro del
menuid se genera un excepcion , pero lala tabla esta diseñada de tal modo que
todos los registros del menuid sean nombres de menus (# de menus = # de
registros), esto depronto me ayuda a explicar un poko la idea)

gracias...

"Julio Casal" escribió:

Amigo, la verdad, al igual que Tristan estoy confundido con lo que deseas
hacer. Confírmame algo, en resumen, lo que quieres hacer es armar tu menú a
partir de la info que tienes en una tabla de tu base de datos, verdad?

Saludos.

Julio Casal
.Net Solutions Developer
MCAD


"Miko_tnt" wrote:

> ya cambie esa parte del codigo, pero lo que quiero es tener una propiedad
> personalizada que me permita leer info de una base de datos y compararla con
> el nombre de un menu para poder asignarle un testo.. asi lo tengo en este
> momento:
>
> Dim clave As String
> Dim desc As String
> Do While lector.Read
> clave = "me." & Trim(lector.Item("MenuId")) & ".text"
> desc = Trim(lector.Item("Descripcion"))
> Loop
>
> ya tengo hecha la conexion y definido el lector con su respectivo comando,
> MenuId es una columna de la tabla(DB) y descripcion otra columna, la idea es
> tener un menu ya definido dentro de una aplicacion y que los nombres de cada
> submenu esten en la base de datos, para que cuando valla leyendo cada MenuId
> si hay algun menu con ese nombre le ponga en la propiedad .Text lo que esta
> en descripcionantes creo que se hacia :
>
> &clave = descripcion, pero en esta version no funciona
>
> Agredazco cualquier ayuda .. llevo mucho tiempo intentando resolver esto
>
> "Julio Casal" escribió:
>
> > ¿Qué parte no funciona?
> >
> > Julio Casal
> > .Net Solutions Developer
> > MCAD
> >
> >
> > "Miko_tnt" wrote:
> >
> > > tengo el siguiente problema, tengo una funcion que recibe un menu y una
> > > hashtable y quiero recorrer todo el menu y al mismo tiempo la hash table y
> > > preguntar que cuando el nombre del menu sea igual a la clave de la tabla haga
> > > la propiedad text igual a la descripcion de la tabla
> > >
> > > tengo este codigo pero no funciona, por favor agradezko kuakier ayuda
> > >
> > > Public Function Generar_Menu(ByVal mm As menu, ByVal tabla As Hashtable) As
> > > menu
> > > Dim menui As MenuItem
> > > Dim elemento As New DictionaryEntry()
> > > For Each menui In mm.MenuItems
> > > For Each elemento In tabla
> > > If (tabla.ContainsKey(menui.nombredelmenu) Then
> > > menui.Text = tabla.Item(menui.nombredelmenu)
> > > End If
> > > Next
> > > Next
> > > End Function
> > >
Respuesta Responder a este mensaje
#7 Tristan
28/06/2005 - 23:38 | Informe spam
Me parece que empiezo a adivinar lo que quieres.

Mira, esto sería un código completo para crear un menú desde una tabla como
la que creo que tienes. Las primeras lineas solo sirven para crear una tabla
de ejemplo:


Dim tabla As New DataTable
tabla.Columns.Add("MenuId")
tabla.Columns.Add("Descripción")
tabla.Rows.Add(New Object() {"MNU0", "Archivo"})
tabla.Rows.Add(New Object() {"MNU00", "Abrir"})
tabla.Rows.Add(New Object() {"MNU000", "Abrir documento"})
tabla.Rows.Add(New Object() {"MNU001", "Abrir otro"})
tabla.Rows.Add(New Object() {"MNU01", "Guardar"})
tabla.Rows.Add(New Object() {"MNU1", "Edición"})
tabla.Rows.Add(New Object() {"MNU11", "Copiar"})


Dim menu As New MainMenu
Dim item As MenuItem
Dim padre As Menu
Dim id, idPadre As String
Dim items As New Hashtable
items.Add("MNU", menu)
For Each fila As DataRow In tabla.Rows
id = fila("MenuId").ToString()
idPadre = id.Substring(0, id.Length - 1)
padre = items(idPadre) '<= mejor DirectCast(..., Menu)
item = New MenuItem(fila("Descripción"))
padre.MenuItems.Add(item)
items.Add(id, item)
Next
Me.Menu = menu


¿Es eso lo que quieres?. Si los items no están ordenados, bastaría con que
hagas:

tabla.DefaultView.Sort = "MenuId"

Juan Carlos Badiola
MVP - C#
Respuesta Responder a este mensaje
#8 Miko_tnt
29/06/2005 - 00:52 | Informe spam
eso me ayudo bastante .. gracias

"Tristan" escribió:

Me parece que empiezo a adivinar lo que quieres.

Mira, esto sería un código completo para crear un menú desde una tabla como
la que creo que tienes. Las primeras lineas solo sirven para crear una tabla
de ejemplo:


Dim tabla As New DataTable
tabla.Columns.Add("MenuId")
tabla.Columns.Add("Descripción")
tabla.Rows.Add(New Object() {"MNU0", "Archivo"})
tabla.Rows.Add(New Object() {"MNU00", "Abrir"})
tabla.Rows.Add(New Object() {"MNU000", "Abrir documento"})
tabla.Rows.Add(New Object() {"MNU001", "Abrir otro"})
tabla.Rows.Add(New Object() {"MNU01", "Guardar"})
tabla.Rows.Add(New Object() {"MNU1", "Edición"})
tabla.Rows.Add(New Object() {"MNU11", "Copiar"})


Dim menu As New MainMenu
Dim item As MenuItem
Dim padre As Menu
Dim id, idPadre As String
Dim items As New Hashtable
items.Add("MNU", menu)
For Each fila As DataRow In tabla.Rows
id = fila("MenuId").ToString()
idPadre = id.Substring(0, id.Length - 1)
padre = items(idPadre) '<= mejor DirectCast(..., Menu)
item = New MenuItem(fila("Descripción"))
padre.MenuItems.Add(item)
items.Add(id, item)
Next
Me.Menu = menu


¿Es eso lo que quieres?. Si los items no están ordenados, bastaría con que
hagas:

tabla.DefaultView.Sort = "MenuId"

Juan Carlos Badiola
MVP - C#



email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida