Frågan 10 juni 2008 10:44 #1 Hej!
Jag har en treeview som jag vill ladda dynamiskt från en databas.
Jag får ett resultatset i en lista som ser ut som följer:
NodeId
parentNodeID
NodeName
Jag måste göra laddningen programmatiskt. Jag antar att jag behöver en rekursiv funktion eller något?
Någon som har tips?
T Travoni Medlem sedan okt. 2004 1 556 inlägg Bra idé, men det faller på att den datasetets.GetXML-metod inte returnerar XML med attribut... Hierarkin blir rätt, men nodtexterna blir inte rätt...
hopparn Medlem sedan nov. 2001 1 551 inlägg jag kanske kan ke dig något exempel men inte förrän i morgon då jag sitter på rätt burk
mvh
Hopparn
hopparn Medlem sedan nov. 2001 1 551 inlägg typ såhär gör jag :)
metoden
renderContent(dt.Rows, node, 0);
där 0 är levelnivå in i metoden, körs i någon form av databindning av trädet.
sen ser den ut ung såhär
private void renderContent(DataRowCollection r, TreeNode pn, int level)
{
int parentId = Convert.ToInt32(pn.Value);
foreach (DataRow dr in r)
{
if (Convert.ToInt32(dr["parent"]) == parentId && Convert.ToInt32(dr["lvl"]) == level)
{
string nodeIcon;
switch (level)
{
case 0:
default:
nodeIcon = _chapterImageURL;
break;
case 1:
nodeIcon = _sectionImageURL;
break;
case 2:
nodeIcon = _documentImageURL;
break;
case 3:
nodeIcon = _figureImageURL;
break;
}
TreeNode n = new TreeNode(dr["Name"].ToString(), dr["Id"].ToString(), nodeIcon);
renderContent(r, n, level + 1);
pn.ChildNodes.Add(n);
}
}
}
alltså rekursivt :)
lycka till