Visualizzazione dei risultati da 1 a 5 su 5

Discussione: menu dinamico con css

  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2007
    Messaggi
    226

    menu dinamico con css

    ciao

    poco tempo fa ho creato un sito web in php......

    questo sito aveva un menu dinamico che a seconda della pagina in cui mi trovavo mi dava un menu con formatazione diversa.....
    cioè se ero sulla pagina contatti solo quel bottone diventava rosso mentre gli altri restavano normali.

    Ecco il codice:
    codice:
    $array_menu = array(
    "chi-siamo.php" => "CHI SIAMO",
    "galleria.php" => "GALLERIA",
    "ultime-novita.php" => "NOVITA'",
    "new-antiques.php" => "TRENDY",
    "ordina.php" => "ORDINA",
    "contatti.php" => "CONTATTI",
    "blog.php" => "BLOG",
    "faq.php" => "F.A.Q.",
    "http://stores.ebay.it/ARTISTIC-antiques-art-collectibles" => "SU EBAY",
    );
    
    
    $pagina_visualizzata = basename($_SERVER['PHP_SELF']);
    
    
    
    echo "<ul id=\"navlist\">";
    
    
    while(list($url, $label) = each($array_menu)) {
    
    if ($url == $pagina_visualizzata){
         $stile = "part";
    } else  {
         $stile = "attivo";
    }
    
    echo "
         <li class=\"$stile\">
            <a href=\"$url\">$label</a>
         
    ";
    
    }
    
    echo "[/list]";

    adesso mi trovo a dover ricompilare il progetto con visual studio.


    Vorrei sapere se qualcuno mi può aiutare nella compilazione di questo menù......perche non riesco a venirne fuori....

    I dati del menu sono presi da database, dove ho indicato in una tabella......numero di visualizzazione, nome visualizzato, collegamento html

    lo richiamo tramite store procedure che mi riporta l'ordine con cui deve essere visulizato.

    codice:
     Private Function RicTesti(ByVal RiferimentoPagina As String, ByVal RiferimentoLingua As String) As DataTableCollection
            Dim da As New OleDb.OleDbDataAdapter
            Dim ds As New DataSet
            Try
                Dim testCMD As OleDb.OleDbCommand = New OleDb.OleDbCommand("RicercaTesti", objdb)
                testCMD.CommandType = CommandType.StoredProcedure
    
    
                Dim param1 As OleDb.OleDbParameter = testCMD.Parameters.Add("001", OleDb.OleDbType.Char, 3)
                param1.Direction = ParameterDirection.Input
    
                Dim param2 As OleDb.OleDbParameter = testCMD.Parameters.Add("001", OleDb.OleDbType.Char, 3)
                param1.Direction = ParameterDirection.Input
    
                param1.Value = RiferimentoPagina
                param2.Value = RiferimentoLingua
    
                da.SelectCommand = testCMD
    
                da.Fill(ds, "Articoli")
    
            Catch ex As Exception
    
            End Try
            Return ds.Tables
        End Function
    fino ad ora i testi li ho stampati a video cosi:
    codice:
         Private Sub Bind(ByVal dtArticoli As DataTable)
            For Each row As DataRow In dtArticoli.Rows
                Dim lt As Literal = CType(Panel1.FindControl(Trim(row("CodiceCampo").ToString())), Literal)
                If Not (lt Is Nothing) Then
                    lt.Text = row("Prompt").ToString()
                End If
            Next
        End Sub
    
        Private Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
            If Not IsPostBack Then
                Dim dt As DataTableCollection
                dt = RicTesti("001", "001")
                Bind(dt(0))
            End If
        End Sub

    Adesso non penso vada più bene per il menu perche devo diversificare a seconda dello stile css contenuto nella pagina dei fogli di stile .css



    Adesso come faccio a diversificarlo a seconda della pagina in cui mi trovo?????

    Posso inserire il menù nella master page???? Ed in questo caso come faccio ad eseguire il controllo??

    Lo devo inserire in ogni pagina indicando in qualche modo in che pagina mi trovo???


    AIUTO..................

    Sono bloccata, confusa, e non so come scrivere quella funzione.

  2. #2
    Utente di HTML.it L'avatar di Holin
    Registrato dal
    Oct 2007
    Messaggi
    64
    Premetto che non ho capito alla perfezione il problema.. potresti essere più chiara?

    In ogni caso.. in PHP avevi fatto un menu che colorava in modo diverso il link della pagina attiva.. se vuoi fare lo stesso in ASP.NET basta che prendi il nome del file della pagina con
    codice:
    System.IO.Path.GetFileName(HttpContext.Current.Request.FilePath).ToLower
    Dopodichè accedi all'oggetto HyperLink che hai nella pagina o nella MasterPage con la funzione
    codice:
    FindControl("IdHyperLink")
    dell'oggetto Page o MasterPage e ne modifichi la proprietà CssClass.

    Se non è ciò che volevi fare, allora scusami ma proprio non ho capito..


  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2007
    Messaggi
    226
    é proprio quello che volevo fare almeno credo................perchè non ho capito bene come procedere...


    Il menu lo inserisco nella MasterPage.......
    lo richiamo così nelle pagine:
    codice:
    <asp:Literal ID="L2" runat="server"></asp:Literal>
    da codice lo chiamo così:
    codice:
    Private Function RicTesti(ByVal dato As String) As DataSet
            Dim da As New OleDb.OleDbDataAdapter
            Dim ds As DataSet = New DataSet
            'Ricerca testo nel databse attraverso la query
            Try
                Dim testCMD As OleDb.OleDbCommand = New OleDb.OleDbCommand("RicercaTesti", objDb)
                testCMD.CommandType = CommandType.StoredProcedure
    
                Dim RetValue As OleDb.OleDbParameter = testCMD.Parameters.Add("001", OleDb.OleDbType.Numeric)
                RetValue.Direction = ParameterDirection.ReturnValue
    
              
    
                Dim param1 As OleDb.OleDbParameter = testCMD.Parameters.Add("001", OleDb.OleDbType.VarChar, 80)
                param1.Direction = ParameterDirection.Input
    
                Dim param2 As OleDb.OleDbParameter = testCMD.Parameters.Add("001", OleDb.OleDbType.VarChar, 80)
                param1.Direction = ParameterDirection.Input
    
                param1.Value = dato
    
                da.SelectCommand = testCMD
    
                da.Fill(ds, "Articoli")
    
            Catch ex As Exception
    
            End Try
            Return ds
        End Function
    ok ora ho dentro la tabella per esempio questi record:
    chi siamo, chi-siamo.aspx
    home, home.aspx
    ecc......

    adesso inserisco questo:

    e qui mi blocco
    codice:
     Private Sub Bind(ByVal dtArticoli As DataTable)
    
    
      dim a as System.IO.Path.GetFileName(HttpContext.Current.Request.FilePath).ToLower
    
    
            For Each row As DataRow In dtArticoli.Rows
    
                Dim lt As Literal = CType(Page.FindControl(row("PaginaHtml").ToString()), Literal)
                If Not (lt Is Nothing) Then
                    lt.Text = row("Prompt").ToString()
                End If
            Next
        End Sub
    e qui mi sono bloccata........

  4. #4
    Utente di HTML.it L'avatar di Holin
    Registrato dal
    Oct 2007
    Messaggi
    64
    Francamente non capisco il motivo per cui inserisci dei link in un Literal VVoVe:

    Io invece farei così...
    Nella MasterPage metto una Table che conterrà la lista di link
    codice:
    <asp:Table ID="Links" runat="server"></asp:Table>
    La funzione che carica i dati da db è ok

    Nella funzione bind della pagina inserisco
    codice:
    dim NomePagina as System.IO.Path.GetFileName(HttpContext.Current.Request.FilePath).ToLower
    Dim TabellaLink As Table  = Me.Master.FindControl("Links")
    
    If Not (TabellaLink Is Nothing) Then
         For Each row As DataRow In dtArticoli.Rows
                'riempio la tabella con g
                Dim riga As TableRow = new TableRow()
                Dim cella As TableCell = new TableCell()
                Dim link As HyperLink = new HyperLink()
                link.Text = row("NomeColonnaTestoLink").ToString
                link.NavigateUrl = row("NomeColonnaValoreLink").ToString
                If (link.NavigateUrl.ToLower = NomePagina) Then
                      link.CssClass = "ClasseEvidenziaLink"
                End If
                cella.Controls.Add(link)
                riga.Cells.Add(cella)
                TabellaLink.Rows.Add(riga)
         Next
    End If
    Dovrai sostituire diversi nomi, come la classe CSS ecc..

    Considera che non uso VB.NET quindi è probabile che ci siano un sacco di errori di sintassi, ma credo di aver reso l'idea. Io così l'ho realizzato in C# qualche tempo fa.


  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2007
    Messaggi
    226
    Scusate l'ignoranza ma non ci riesco................un aiutino


    codice:
    PrivateFunction RicMenu(ByVal RiferimentoPagina AsString, ByVal RiferimentoLingua AsString) As DataTableCollection
    Dim da AsNew OleDbDataAdapter
    Dim ds AsNew DataSet
    Try
    Dim strsql AsString = "SELECT Collegamento, Titolo, css FROM MENU1 Where codicevisualizzazione=1 ORDER BY Codice"
    da = New OleDbDataAdapter(strsql, objdb2)
    da.Fill(ds, "menu1")
    Catch ex As Exception
    EndTry
    Return ds.Tables
    EndFunction
     
     
    PrivateSub Bind(ByVal dtMenu1 As DataTable)
    ForEach row As DataRow In dtMenu1.Rows
    Dim lt As Literal = CType(Panel1.FindControl(Trim(row("CodiceCampo").ToString())), Literal)
    Dim LinkNavigateUrl As HyperLink = New HyperLink()
    IfNot (lt IsNothing) Then
    EndIf
    Next
    EndSub

    Ho un menu costruito con i css, (che io qui ho messo dentro literal)

    Il menù funziona così, da tabella prendo il nome da visuallizare ed il collegamento di pagina.
    A seconda della pagina dove mi trovo stampa a video un css diverso con il risultato che il bottone della pagina attiva diventa rosso mentre gli altri restano nella formatazione normale.

    Dovrei inserere un controllo che mi facesse questa verifica e mi dasse la diversa formatazione facendo il controllo sul nome della pagina.

    Inserisco il menu sulla masterpage.



    Vi posto anche il codice css....
    codice:
    #navlist ul {
    margin-left: 0;
    padding-left: 0;
    white-space: nowrap;
    font-weight: bold;
    }
    #navlist li.attivo {
    display:inline;
    list-style-type:none;
    }
    #navlist li.attivo a { padding: 3px 10px; }
    #navlist li.attivo a:link, #navlist li.attivo a:visited {
    color:#730400;
    background-color:#E7C35A;
    text-decoration:none;
    }
    #navlist li.attivo a:hover {
    color:#E7C35A;
    background-color:#FF0000;
    text-decoration:none;
    }
    
    #navlist li.part {
    display:inline;
    list-style-type:none;
    }
    #navlist li.part a{ padding: 3px 10px; }
    #navlist li.part a:link, #navlist li.part a:visited {
    color:#730400;
    background-color:#FF0000;
    text-decoration:none;
    }
    #navlist li.part a:hover {
    color:#730400;
    background-color:#FF0000;
    text-decoration:none;
    }



    Non riesco ad inserire il controllo..........ho provato ma non sono molto brava con VB....ho iniziato da poco.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.