|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Mar 2000
Città: Piacenza d'Adige (PD)
Messaggi: 651
|
[C#] Treeview e ListView collegata
Salve a tutti, mi sto cimentando con il C#, creando una piccola applicazione che crea un albero di categorie da un database (usando l'ID della categoria di livello superiore), poi una volta selezionato il nodo dell'albero, dovrebbe comparire nella ListView la lista degli articoli presenti in quella categoria.
Qualcosa sono riuscito a fare, solo che non riesco a trovare il metodo per filtrare la query degli articoli della ListView in base alla categoria selezionata nel treeview. Il codice è il seguente: Codice:
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.Data.OleDb; namespace Treeview { public partial class Articoli : Form { public Articoli() { InitializeComponent(); string connString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Datapref.mdb"; int? ParentUID = null; System.Collections.ArrayList tnodes = new System.Collections.ArrayList(); OleDbConnection conn = new OleDbConnection(connString); DataSet ds = new DataSet(); conn.Open(); OleDbDataAdapter adapter = new OleDbDataAdapter("SELECT * FROM TblArtCat", conn); adapter.Fill(ds); conn.Close(); DataTable dtbParent = new DataTable(); dtbParent = ds.Tables[0]; foreach (DataRow drowParent in dtbParent.Rows) { if (ParentUID == null) { ParentUID = 0; TreeNode node = new TreeNode(); node.Text = drowParent["ArtCatDeb"].ToString(); node.Tag = (int)drowParent["ArtCatKey"]; TreeCat.Nodes.Add(node); tnodes.Add(node); } else { ParentUID = (int)drowParent["ArtCatLnk"]; //Se è il primo nodo if (ParentUID == 0) { TreeNode node = new TreeNode(); node.Text = drowParent["ArtCatDeb"].ToString(); node.Tag = (int)drowParent["ArtCatKey"]; TreeCat.Nodes.Add(node); tnodes.Add(node); } else { for (int i = 0; i < tnodes.Count; i++) { if ((int)((TreeNode)tnodes[i]).Tag == ParentUID) { TreeNode node = new TreeNode(); node.Text = drowParent["ArtCatDeb"].ToString(); node.Tag = (int)drowParent["ArtCatKey"]; tnodes.Add(node); ((TreeNode)tnodes[i]).Nodes.Add(node); break; } //Fine albero } } } } } private void TreeCat_AfterSelect(object sender, TreeViewEventArgs e) { string connString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Datapref.mdb"; OleDbConnection conn = new OleDbConnection(connString); DataSet DGrid = new DataSet(); conn.Open(); OleDbDataAdapter adapter = new OleDbDataAdapter("SELECT ArtKey, ArtDeb FROM TblArt WHERE TblArt.ArtCatKey = 29" , conn); adapter.Fill(DGrid); DataTable dtable = new DataTable(); dtable = DGrid.Tables[0]; // Svuota la Listview ArtGrid.Items.Clear(); for (int i = 0; i < dtable.Rows.Count; i++) { DataRow drow = dtable.Rows[i]; // Definisce Item e SubItems ListViewItem lvi = new ListViewItem(drow["ArtKey"].ToString()); lvi.SubItems.Add(drow["ArtDeb"].ToString()); // Aggiunge i dati alla Listview ArtGrid.Items.Add(lvi); } conn.Close(); } private void Chiudi_Click(object sender, EventArgs e) { this.Close(); } } } Grazie a chi mi aiuterà! |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Mar 2000
Città: Piacenza d'Adige (PD)
Messaggi: 651
|
Grazie lo stesso, ho risolto da solo usando il Tag del Node dentro la query.
Per l'utilità di tutti includo il codice corretto: Codice:
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.Data.OleDb; namespace Treeview { public partial class Articoli : Form { public Articoli() { InitializeComponent(); string connString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Datapref.mdb"; int? ParentUID = null; System.Collections.ArrayList tnodes = new System.Collections.ArrayList(); OleDbConnection conn = new OleDbConnection(connString); DataSet ds = new DataSet(); conn.Open(); OleDbDataAdapter adapter = new OleDbDataAdapter("SELECT * FROM TblArtCat", conn); adapter.Fill(ds); conn.Close(); DataTable dtbParent = new DataTable(); dtbParent = ds.Tables[0]; foreach (DataRow drowParent in dtbParent.Rows) { if (ParentUID == null) { ParentUID = 0; TreeNode node = new TreeNode(); node.Text = drowParent["ArtCatDeb"].ToString(); node.Tag = (int)drowParent["ArtCatKey"]; TreeCat.Nodes.Add(node); tnodes.Add(node); } else { ParentUID = (int)drowParent["ArtCatLnk"]; //Se è il primo nodo if (ParentUID == 0) { TreeNode node = new TreeNode(); node.Text = drowParent["ArtCatDeb"].ToString(); node.Tag = (int)drowParent["ArtCatKey"]; TreeCat.Nodes.Add(node); tnodes.Add(node); } else { for (int i = 0; i < tnodes.Count; i++) { if ((int)((TreeNode)tnodes[i]).Tag == ParentUID) { TreeNode node = new TreeNode(); node.Text = drowParent["ArtCatDeb"].ToString(); node.Tag = (int)drowParent["ArtCatKey"]; tnodes.Add(node); ((TreeNode)tnodes[i]).Nodes.Add(node); break; } //Fine albero } } } } } private void TreeCat_AfterSelect(object sender, TreeViewEventArgs e) { string connString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Datapref.mdb"; OleDbConnection conn = new OleDbConnection(connString); DataSet DGrid = new DataSet(); conn.Open(); string s2 = TreeCat.SelectedNode.Tag.ToString(); string s1 = "SELECT ArtKey, ArtDeb FROM TblArt WHERE TblArt.ArtCatKey ="; s1 += s2; OleDbDataAdapter adapter = new OleDbDataAdapter(s1, conn); adapter.Fill(DGrid); DataTable dtable = new DataTable(); dtable = DGrid.Tables[0]; // Svuota la Listview ArtGrid.Items.Clear(); for (int i = 0; i < dtable.Rows.Count; i++) { DataRow drow = dtable.Rows[i]; // Definisce Item e SubItems ListViewItem lvi = new ListViewItem(drow["ArtKey"].ToString()); lvi.SubItems.Add(drow["ArtDeb"].ToString()); // Aggiunge i dati alla Listview ArtGrid.Items.Add(lvi); } conn.Close(); } private void Chiudi_Click(object sender, EventArgs e) { this.Close(); } } } |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 23:31.