[ sasha74 @ 20.03.2006. 08:06 ] @
Molio bih za pomoć u vezi programiranja Tree View kontrole u VB.NET-u,pokušavam da programski izvedem punjenje stabla i generisanje child nodova -nivo dubine je 3, ali mi ne uspeva. Koristim web servise za pristup bazi podataka. Da li je neko imao prilike za programiranjem ove kontrole, pa ako je u mogućnosti da mi pošalje kod ili ga stavi u okviru posta. Molim za pomoć, hitno je,nemam veliko iskustvo u VB programiranju, početnik sam.
Unapred hvala!!!

[Ovu poruku je menjao sasha74 dana 20.03.2006. u 09:09 GMT+1]
[ Sandra_G @ 20.03.2006. 13:33 ] @
U principu bi trebalo da koristis rekurziju. Recimo da imas podatke u nekoj tabeli, i da svaki red te tabele ima neki indikator koji pokazuje "parent" tog reda (recorda). Pristup u teoriji je da ides po recordima u tabeli, dodas record kao root na treeview. Zatim rekurzijom radis to isto, s tim sto prosledis treeNode na koji ces da dodajes dalje nodove.
Nesto slicno radi ovaj kod, doduse u C#. Naravno, ne mozes da ga primenis direktno u svoj kod, ali se nadam da ti je bar malo jasnije sta bi trebalo da uradis. Srecno!

...
DataSet dataset = UzmiRecorde();
foreach (DataRow row in dataset.nekaTabela.Rows)
{
if (Convert.ToInt32(row["ID_PARENT"]) == 0) // nema parent, pa je to record koji ide kao root node
{
TreeNode ndParent = new TreeNode(row["VREDNOST"].ToString());
twSource.Nodes.Add(ndParent);
RecurseTreeView(row, ndParent);
}
}
....

private static void RecurseTreeViev(DataRow row, TreeNode ndParent)
{
System.Data.DataSet data = UzmiChildRecorde(row["ID_PARENT"]);
if (data.Tables[0].Rows.Count > 0)
{
foreach (DataRow r in data.Tables[0].Rows)
{
TreeNode ndChild = ndParent.Nodes.Add(r["VREDNOST"].ToString());
RecurseTreeView(r, ndChild);
}
}
}


[Ovu poruku je menjao Sandra_G dana 20.03.2006. u 14:35 GMT+1]
[ sivan347 @ 21.03.2006. 09:07 ] @
Drugi nacin je da punis nodove postepeno tj. na prvi event recimo Page_Load napunis samo parent nodove a onda na klik event na odredjeni node punis samo taj node njegovim child nodovima. Ovo je bolja varijanta ako imas puno podataka.