Ladda treeview från databas

.NET

4 svar · 557 visningar · startad av invecklaren

Medlem sedan jan. 2008280 inlägg
Trådstart#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?

Medlem sedan okt. 20041 556 inlägg
Medlem sedan jan. 2008280 inlägg
#3

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...

Medlem sedan nov. 20011 551 inlägg
#4

jag kanske kan ke dig något exempel men inte förrän i morgon då jag sitter på rätt burk

mvh
Hopparn

Medlem sedan nov. 20011 551 inlägg
#5

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

255 ms totalt · 4 externa anrop · v20260731065814-full.d34c6d5a
122 ms — deklarationer (db)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)
122 ms — ändringar (db)