webForumDet fria alternativet

Ladda treeview från databas

.NET

4 svar · 540 visningar · startad av invecklaren

Medlem sedan jan. 2008280 inlägg
Frågan#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

250 ms totalt · 4 externa anrop · v20260731065814-full.e96017d9
118 ms — deklarationer (db)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)
118 ms — ändringar (db)