+ 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