Windows Forms VB.NET - Remplir TreeView avec des données Hiérarchiques

Aloha,
Je suis en train de remplir un treeview sur un formulaire windows app avec Hiérarchique des données à partir de SQL db.

La structure de la base de données est:

id_def  id_parent description
1     NULL      Multidificiência
2     NULL      Síndrome
3     NULL      Outros
4     1       Surdez de Transmissão
5     2       Surdez Neurossensorial Ligeira
6     3       Surdez Neurossensorial Média

les enregistrements avec la valeur NULL à id_parent, sont les catégories principales, et celles avec leurs id_parent, sont des sous-catégories.

N'importe qui peut aider avec le code pour remplir le TreeView ?
J'ai réussi à le faire avec une ASP.NET app, si cela peut aider, voici le code:

protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
PopulateRootLevel();
}
private void PopulateRootLevel()
{
SqlConnection objConn = new SqlConnection("Data Source=1.1.1.1;Initial Catalog=DREER_EDUCANDOS2006;User ID=sre_web;Password=xxx");
SqlCommand objCommand = new SqlCommand("select id_deficiencia,descricao,(select count(*) FROM NecessidadesEspeciais WHERE id_deficiencia_pai=sc.id_deficiencia) childnodecount FROM NecessidadesEspeciais sc where id_deficiencia_pai IS NULL", objConn);
SqlDataAdapter da = new SqlDataAdapter(objCommand);
DataTable dt = new DataTable();
da.Fill(dt);
PopulateNodes(dt, TreeView1.Nodes);
}
private void PopulateSubLevel(int parentid, TreeNode parentNode)
{
SqlConnection objConn = new SqlConnection("Data Source=1.1.1.1;Initial Catalog=DREER_EDUCANDOS2006;User ID=sre_web;Password=xxx");
SqlCommand objCommand = new SqlCommand("select id_deficiencia,descricao,(select count(*) FROM NecessidadesEspeciais WHERE id_deficiencia_pai=sc.id_deficiencia) childnodecount FROM NecessidadesEspeciais sc where id_deficiencia_pai=@id_deficiencia_pai", objConn);
objCommand.Parameters.Add("@id_deficiencia_pai", SqlDbType.Int).Value = parentid;
SqlDataAdapter da = new SqlDataAdapter(objCommand);
DataTable dt = new DataTable();
da.Fill(dt);
PopulateNodes(dt, parentNode.ChildNodes);
}
protected void TreeView1_TreeNodePopulate(object sender, TreeNodeEventArgs e)
{
PopulateSubLevel(Int32.Parse(e.Node.Value), e.Node);
}
private void PopulateNodes(DataTable dt, TreeNodeCollection nodes)
{
foreach (DataRow dr in dt.Rows)
{
TreeNode tn = new TreeNode();
tn.Text = dr["descricao"].ToString();
tn.Value = dr["id_deficiencia"].ToString();
nodes.Add(tn);
//If node has child nodes, then enable on-demand populating
tn.PopulateOnDemand = ((int)(dr["childnodecount"]) > 0);
}
}
  • Remarque assurez-vous exactement quel est ton problème. Est-il quelque chose comme ce que vous cherchez (remplissage d'une winforms treeview "à la demande", C# exemple): stackoverflow.com/questions/1851729/...
  • Tack för ditt svar fredrik =) si u prendre un coup d'oeil ici: aspalliance.com/... c'est exactement ce que je fais semblant, mais pour windows form.
  • Je suis impressionné 🙂 Brièvement vérifié l'article, elle ressemble à ma réponse à cette question devrait faire l'affaire pour vous. Il convertit VB.NET plutôt bien à l'aide de ce convertisseur: developerfusion.com/tools/convert/csharp-to-vb La seule chose qui n'est pas tout à fait, le multi-ligne lambda à l'intérieur de la QueueUserWorkItem, mais je suppose que ça pourrait être extraite d'une méthode distincte pour résoudre le problème.
  • Ma copine est suédoise =) je vais laisser u savoir si j'ai réussi à le résoudre, merci pour l'aide. cheers
  • De toute façon cela est lié à asp.net et c# ne pas vb.net
  • Désolé
  • désolé frank, je suis bloqué la mise en œuvre de votre exemple de code dans ma solution. c'est exactement le genre de tableau que j'ai stackoverflow.com/questions/38801/... je veux le remplir dans un formulaire windows treeview. C'est principalement ça. Je vous serais très reconnaissant si vous pourriez m'aider.