+ Rispondi al messaggio
Visualizzazione dei risultati da 1 a 3 su 3

Menu Categorie collegato a DB

  1. #1
    mikeee non è in linea Scolaretto
    Salve a tutti, vediamo un po che mi sapete rispondere su questo argomento:

    Ambiente ASP.NET 2.0.

    Ho un Db popolato da categorie e sottocategorie di articoli gestiti su piattaforma amministrativa per aggiungere e togliere categorie.

    Vorrei collegare un menù al db access in maniera tale che quest'ultimo sia sincronizzato ai cambiamenti delle categorie che vengono svolti dall'admin.

    Ho visto che il controllo Menu di Asp.NET 2.0 o 3.0 non prevede collegamenti diretti al DB, ma bensì a un file XML o al SiteMap.

    La prima soluzione potrebbe andar bene, la seconda non ha senso.

    Se mi baso su un file XML questo dovrà essere Aggiornato ogni volta che c'è una variazione nelle categorie, di conseguenza dovrei trovare una maniera (Che non conosco) per creare un XML.

    Domande:
    - Secondo voi è la soluzione giusta?
    - Esistono soluzioni alternative?
    - Come faccio a creare un XML da ASP.NET che formattazione dovrei dargli?

    Vi ringrazio in anticipo.
    ℹ️ Leggi di più su mikeee ...

  2. #2
    L'avatar di SignIn
    SignIn non è in linea Scribacchino
    Credo che come prima cosa c'è da fare una precisazione nel senso che il SiteMap non è altro che un file XML quindi il controllo menù può essere riempito essenzialmente in due modi o tramite XML(cosa che hai giustamente indicato) oppure andando ad agire sulla collection MenuItemCollection aggiungendo dei MenuItem.
    Detto questo di soluzioni alternative nè esistono, per esempio tempo fa mi son costruito un controllo che mi generava un menù il cui markup in fase di renderizzazione non era altro che una serie di div ed elenchi opportunamente formattati.
    Avevo scelto questa strada perchè all'epoca non mi era assolutamente piaciuta la gestione dei css per i vari item/menù( credo che adesso con i Css Friendly il controllo si possa customizzare notevolmente e più facilmente ma sinceramente non ho mai provato. Ad ogni modo se ti interessa questo è il link: CSS Friendly Control Adapters - Home).
    NB: Inoltre non sò se il controllo in questione è cross browser(dipende se stai realizzando un'applicazione intranet o meno)
    Oltre alla soluzione più custom ma sicuramente più "dispendiosa" in termine di tempo dato che devi scrivere molto più codice, c'è la possibilità di usare/provare alcuni controlli menù già pronti(anche questi mai testati...il primo sicuramente free, il secondo non ricordo):
    obout inc - obout Text Menu - What is obout Text Menu
    Advanced Menu for ASP.NET
    Per quanto riguarda l'ultima domanda cioè come dare in pasto un xml al menù, basta usare le classi che il Framework ti mette a disposizione. Giusto per darti un'idea:
    XmlDocument doc = new XmlDocument();
    XmlNode nodeDeclaration = doc.CreateNode(XmlNodeType.XmlDeclaration, string.Empty, string.Empty);
    doc.AppendChild(nodeDeclaration);
    XmlNode nodeRoot = doc.CreateNode(XmlNodeType.Element, "Menu", string.Empty);
    nodeRoot.InnerText = "Lista";
    doc.AppendChild(nodeRoot);
    
    XmlElement elementPadre;
    XmlElement elementFiglio;
    XmlAttribute attr;
    for (int i = 0; i < 5; i++)
    {
        elementPadre = doc.CreateElement(null, "Categorie", string.Empty);
        attr = doc.CreateAttribute("DescCategoria");
        attr.Value = "Categoria: " + i.ToString();
        elementPadre.Attributes.Append(attr);
    
        attr = doc.CreateAttribute("IdCategoria");
        attr.Value = i.ToString();
        elementPadre.Attributes.Append(attr);
    
        for (int j = 0; j < 3; j++)
        {
            elementFiglio = doc.CreateElement(null, "Articoli", string.Empty);
            attr = doc.CreateAttribute("DescArticolo");
            attr.Value = "Articolo: " + i.ToString() + "." + j.ToString();
            elementFiglio.Attributes.Append(attr);
    
            attr = doc.CreateAttribute("IdArticolo");
            attr.Value = j.ToString();
            elementFiglio.Attributes.Append(attr);
    
            elementPadre.AppendChild(elementFiglio);
        }
        doc.ChildNodes.Item(1).AppendChild(elementPadre);
    }
    
    XmlDataSource xmlDataSource = new XmlDataSource();
    xmlDataSource.Data = doc.InnerXml;
    
    Menu1.DataSource = xmlDataSource;
    Menu1.DataBind();
    
    mentre il markup:
    <asp:Menu ID="Menu1" runat="server" Orientation="vertical">
      <DataBindings>
          <asp:MenuItemBinding DataMember="Categorie" TextField="DescCategoria" ValueField="IdCategoria"  />
          <asp:MenuItemBinding DataMember="Articoli" TextField="DescArticolo" ValueField="IdArticolo"  />
      </DataBindings>
    </asp:Menu>
    
    Ultima modifica di SignIn; 25-08-2008 15:53 
    ℹ️ Leggi di più su SignIn ...

  3. #3
    mikeee non è in linea Scolaretto
    Grazie SignIn, ho risolto con un TreeView caricato dinamicamente al LoadPage, Grazie Mille!!
    ℹ️ Leggi di più su mikeee ...

+ Rispondi al messaggio

Potrebbero interessarti anche ...

  1. Categorie - Sottocategorie
    Da by sal nel forum Microsoft Excel
    Risposte: 7
    Ultimo Post: 26-08-2014, 13:05
  2. Excel doppio menu a tendina collegato
    Da MrKero nel forum Microsoft Excel
    Risposte: 6
    Ultimo Post: 11-03-2013, 09:24
  3. [ASP]Menu categorie ad albero
    Da Carmen nel forum ASP 3, ASP .Net
    Risposte: 2
    Ultimo Post: 10-08-2011, 17:41
  4. Problema con menu a tendina collegato
    Da torbace nel forum Microsoft Access
    Risposte: 4
    Ultimo Post: 29-09-2010, 15:49
  5. [Javascript]Menù a tendina collegato a pagine
    Da fpta09 nel forum HTML, CSS e JavaScript
    Risposte: 4
    Ultimo Post: 19-06-2010, 14:08