• User

    gestione menu

    ciao
    sono agli inizi della proggramazione in VB.....e ho qualche difficoltà.
    Ho progettato un menù dinamico con la struttura ad albero.
    Il menu è stato caricato in un database Sql.

    Prima ho fatto il collegamento database.
    Poi ho scritto questo codice in visual basic.```
    PublicFunction menu(ByVal testo AsString) As DataSet
    Dim da AsNew OleDb.OleDbDataAdapter
    Dim ds As DataSet = New DataSet()
    Dim dato AsString
    Dim testCMD

    Try
    'richiemo una storeprocedure GestioneMenu che mi dice cosa visualizzare del menu
    Dim dat1 AsNew OleDb.OleDbCommand("GestioneMenu", objDb)
    dat1.CommandType = CommandType.StoredProcedure
    Dim RetValue As OleDb.OleDbParameter = testCMD.Parameter.Add("RetValue", OleDb.OleDbType.Numeric)
    RetValue.Direction = ParameterDirection.ReturnValue
    Dim param1 As OleDb.OleDbParameter = testCMD.Parameters.Add("parametro", OleDb.OleDbType.VarChar, 80)
    param1.Direction = ParameterDirection.Input
    param1.Value = dato
    da.SelectCommand = testCMD

    ' inserisco i dati
    da.Fill(ds, "menugenerico")
    dt = ds.Tables(0)

    Catch ex As Exception
    'lbl.Message.Text = "Errore nel caricamento menù"
    EndTry

     
    Adesso vorrei sapere come gestire il menu.
    Dovrei stampare in asp.net il menù, tenendo presente che i dati mi arrivano in maniera confusa e io devo dividerli in padri e figli.
     sabry

  • User Attivo

    comincia a mettere un repeater (che serve a stampare i dati provenienti dal tuo datatable).

    Nell'html:

    
    <asp:Repeater id="miorepeater" runat="server">
    <ItemTemplate><%#DataBinder.Eval(Container.DataItem, "tuocampo")%></ItemTemplate>
    </asp:Repeater>
    
    

    nel codice in alto

    
    ' inserisco i dati
    da.Fill(ds, "menugenerico")
    dt = ds.Tables(0)
    
    **miorepeater.datasource=dt
    miorepeater.databind**
    
    

    Personalizzati il codice con i tuoi campi. Dovresti almeno cominciare a vedere gli item.
    Per il padre/figlio è un po più complesso.


  • User

    sono riuscita a fare molti passi avanti dal post.......adesso visualizza benissimo il minù ad albero, ma resta sempre il problema della parte grafica che vorrei cambiare e modificare:

    Dalla mia ricerca ho visto che ci sono molte persone in internet che hanno probblemi di i miei stessi probblemi con il menù ad albero.
    Ed allora perche non fare di questo post una specie di tutorial per tutti quelli come me che hanno cercato invano in google e non sono riusciti a trovare niente di soddisfacente.

    Io posto il codice VB funzionante:

    
    PartialPublicClass template
     
     
     
    Inherits Page
    Dim temp AsString
    Dim cont AsInteger
    ProtectedSub Menu_Load(ByVal sender AsObject, ByVal e As System.EventArgs) HandlesMe.Load
    IfNot IsPostBack Then
    Dim nodo AsNew TreeNode
    NodoPrincipale(nodo, 1)
    TreeView1.Nodes.Add(nodo)
     
    nodo.Text = "MENU"
     
    'nodo.Target = ""
    TreeView1.CollapseAll()
    TreeView1.Nodes(0).Expand()
    'MsgBox.Show(Me.lbCodiceOrdine.ID.ToString(), Page)
    EndIf
    EndSub
    PrivateSub NodoPrincipale(ByVal nodo As TreeNode, ByVal codicePadre AsInteger)
    Try
    'definisco il nodo principale della treeview, caricanco le diverse tipologie di magazzini
    cnGeneral.SelectCommand = "SELECT Collegamento, Titolo,codice,url,TARGET,images FROM MENU Where codicepadre=@CodicePadre ORDER BY Codice"
    cnGeneral.SelectCommandType = SqlDataSourceCommandType.Text
    cnGeneral.SelectParameters.Clear()
    cnGeneral.SelectParameters.Add("CodicePadre", TypeCode.Int32, codicePadre)
    Dim dw As DataView = cnGeneral.Select(DataSourceSelectArguments.Empty)
    ForEach rowTipo As DataRow In dw.Table.Rows
    Dim nodeTipo As System.Web.UI.WebControls.TreeNode = New System.Web.UI.WebControls.TreeNode
    If IsDBNull((rowTipo("Url"))) Then
    nodeTipo.NavigateUrl = ""
    Else
    nodeTipo.NavigateUrl = rowTipo("Url")
    EndIf
    If IsDBNull((rowTipo("TARGET"))) Then
    nodeTipo.Target = "_self"
    Else
    nodeTipo.Target = rowTipo("TARGET")
    EndIf
    If IsDBNull((rowTipo("images"))) Then
    nodeTipo.ImageUrl = ""
    Else
    nodeTipo.ImageUrl = rowTipo("images")
    EndIf
    nodeTipo.Text = rowTipo("Titolo")
     
    If IsDBNull((rowTipo("collegamento"))) Then
    temp = 0 + rowTipo("codice")
    Else
    temp = rowTipo("collegamento")
    EndIf
    nodeTipo.Value = temp
    nodeTipo.ToolTip = rowTipo("codice")
    nodo.ChildNodes.Add(nodeTipo)
    IfNot IsDBNull((rowTipo("collegamento"))) Then
    NodoPrincipale(nodeTipo, temp)
    EndIf
    Next
    Catch ex As Exception
    'Utility.ErrorLog(ex.ToString(), Page)
    EndTry
    EndSub
    ProtectedSub TreeView1_SelectedNodeChanged1(ByVal sender AsObject, ByVal e As System.EventArgs) Handles TreeView1.SelectedNodeChanged
    'MsgBox.Show(TreeView1.SelectedNode.ToolTip.ToString(), Page)
    'TreeView1.SelectedValue.ToString() + " " +
    'MsgBox.Show(TreeView1.SelectedNode.Expanded.ToString(), Page)
    If TreeView1.SelectedNode.Expanded.ToString() = TrueThen
    TreeView1.SelectedNode.Collapse()
    Else
    TreeView1.SelectedNode.Expand()
    'TreeView1.Nodes(0).Expand()
    EndIf
    EndSub
     
     
    EndClass
    
    ```E naturalmente la relativa parte di pagina aspx:
    

    <scriptrunat="server">
    ProtectedSub TreeView1_SelectedNodeChanged(ByVal sender AsObject, ByVal e As System.EventArgs)
    EndSub
    </script>

    <formid="form1"runat="server">
    <asp:TreeViewID="TreeView1"runat="server"Height="550px"Width="152px"Font-Size="X-Small"style="font-family: 'Times New Roman', Times, serif;font-size: small"ImageSet="Msdn"NodeIndent="10">
    <parentnodestylefont-bold="False"/>
    <hovernodestyleBackColor="#CCCCCC"font-underline="True"BorderColor="#888888"BorderStyle="Solid"/>
    <selectednodestylebackcolor="green"font-underline="False"horizontalpadding="3px"verticalpadding="1px"BorderColor="#888888"BorderStyle="Solid"BorderWidth="1px"/>
    <nodestylefont-names="Verdana"font-size="8pt"forecolor="Black"horizontalpadding="5px"nodespacing="1px"verticalpadding="2px"/>
    </asp:TreeView></form>

    Adesso bisognerebbe modificare la parte grafica ............ il probblema è che per ilmomento mi rendo conto di non esserne ancora capace.
     
    Vorrei ottenere un menu simile a quello di questo sito:
    http://www.unisi.it/disgeg/frame%20sinistro%20finale.htm
     
    con l'unica differenza che vorrei che il menu si espandessi con il pasaggio del muose sopra senza cliccare la relativa voce.........
     
    Se qualcuno volesse contribuire alla costruzione del menù io ne sarei grata.....ma penso anche molti altri utenti.
    Se dovessi fare dei progresso li posto qui in modo da completare comunque il tutorial.