Visualizzazione dei risultati da 1 a 3 su 3

Discussione: Datalist Annidati

  1. #1
    Utente di HTML.it L'avatar di Franz78
    Registrato dal
    Sep 2004
    Messaggi
    730

    Datalist Annidati

    Ciao a tutti..sto cercando di realizzare un menu con 2 datalist, uno annidato nell'altro che realizza la solita Categoria-sottocategoria....

    solo che n riesco proprio a venirne a capo.....nn mi da errori ma nn mi visualizza le sottocategorie corrispondenti!!!
    Mi date una mano please!!!! qualche suggeriemnto!!!
    Grazie per le risposte

    questo il codice:



    DataSet ds;
    DataView myDataView = new DataView();

    private void Page_Load(object sender, System.EventArgs e)
    {
    if(!Page.IsPostBack)
    {
    ds = new DataSet();
    PopolaCategoria();
    PopolaSottoCategoria();
    }
    }

    private void PopolaCategoria()
    {
    cmd = new OleDbCommand("Select * from CATEGORIE Order By CATEGORIA ASC",Cn);
    Da = new OleDbDataAdapter(cmd);
    Da.Fill(ds,"CATEGORIE");
    dtlCategorie.DataSource = ds.Tables["CATEGORIE"].DefaultView;
    dtlCategorie.DataBind();
    }


    private void PopolaSottoCategoria()
    {
    cmd2 = new OleDbCommand("Select * from SOTTOCATEGORIE",Cn);
    Da2 = new OleDbDataAdapter(cmd2);
    Da2.Fill(ds,"SOTTOCATEGORIE");
    myDataView = ds.Tables["SOTTOCATEGORIE"].DefaultView;

    }



    private void dtlCategorie_ItemDataBound(object sender, System.Web.UI.WebControls.DataListItemEventArgs e)
    {
    DataList myDtl;
    if (e.Item.ItemType == ListItemType.Item | e.Item.ItemType == ListItemType.AlternatingItem)
    {
    myDtl = (DataList)e.Item.FindControl("dtlSottoCategorie");
    string parentID = ((DataRowView)e.Item.DataItem)[0].ToString();
    myDataView.RowFilter = "IDCATEGORIA=" + parentID;
    myDtl.DataSource=myDataView;
    myDtl.DataBind();

    }
    }



    HTML:


    <asp: DataList id="dtlCategorie" runat="server">
    <ItemTemplate>
    <%# DataBinder.Eval(Container.DataItem, "CATEGORIA") %>
    <asp: DataList id="dtlSottoCategorie" runat="server">
    <ItemTemplate>
    <%# DataBinder.Eval(Container.DataItem, "SOTTOCATEGORIA") %>
    </ItemTemplate>
    </asp: DataList>
    </ItemTemplate>
    </asp: DataList>

  2. #2
    Utente di HTML.it L'avatar di geko
    Registrato dal
    Dec 2004
    Messaggi
    104
    Io ho utilizzato un metodo differente e molto elegante, purtroppo non trovo + l'articolo dal quale l'ho preso.
    Crei un DataSet con due DataTable (come il tuo) poi definisci una DataRelation padre-figlio tra le due tabelle.
    Fai il binding del DataList esterno, mentre definisci il DataList interno più o meno così:

    codice:
    <asp:datalist 
        id="dlInterno" 
        DataSource='<%# GetChildRelation(Container.DataItem) %>' 
        Runat="server">
    poichè il DataItem che passi è in realtà l'oggetto DataRowView, il metodo GetChildRelation restituirà la vista figlia attraverso il metodo CreateChildView dell'oggetto DataRowView.

    Spero di esserti stato utile

  3. #3
    Utente di HTML.it L'avatar di Franz78
    Registrato dal
    Sep 2004
    Messaggi
    730
    grazie!!
    adesso provo!!

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 © 2026 vBulletin Solutions, Inc. All rights reserved.