गतिशील रूप से पॉप्युलेट कैसे करें मेरे पास 3 कॉलम, आईडी, नाम और अभिभावक के साथ एक तालिका है। आईडी कॉलम में चलने वाली संख्या होती है जो प्राथमिक कुंजी के रूप में भी कार्य करती है। आईडी नोड का नाम गुण भी होगा। नाम कॉलम में स्ट्रिंग होती है जो ट्रीनोड की टेक्स्ट विशेषता होगी, जबकि पेरेंट आईडी एक कॉलम में नोड की मूल आईडी है।वृक्षारोपण (सी #)
यह कैसे मेरे मेज की तरह लग रहा है:
ID Name ParentID
======================
1 A 0
2 A1 1
3 B 0
4 C 0
5 A2 1
6 B1 3
यह तालिका दर्शाती है कि नोड नोड A1 और A2 के लिए माता-पिता नोड है। "0" के बराबर अभिभावक का अर्थ है कि नोड का अभिभावक रूट नोड (हार्डकोडेड) है। उदा।, नोड ए, बी और सी रूट नोड के बच्चे हैं।
मैं वृक्षदृश्य को पॉप्युलेट करने से पहले पेरेंट आईडी द्वारा पंक्तियों को सॉर्ट करता हूं।
private void SearchParent(TreeView tree, String parentID, TreeNode node)
{
// Post: call TraverseParent method to search parent
TreeNodeCollection collection = tree.Nodes;
// Search parent recursively
foreach (TreeNode n in collection)
{
TraverseParent(n, parentID, node);
}
}
private void TraverseParent(TreeNode potentialParent, String parentID, TreeNode node)
{
// Post: search for parent. When parent is found add child to parent
// am i the parent that you're looking for?
if (parentID.CompareTo(potentialParent.Name) == 0)
{
// found me! i'm your parent!
// add child to parent
potentialParent.Nodes.Add(node);
// update that the parent for child has been found
parentFound = true;
}
else
{
// i'm not your parent
// continue to look for parent recursively
foreach (TreeNode n in potentialParent.Nodes)
{
TraverseParent(n, parentID, node);
}
}
}
सब कुछ ठीक है जब तक मैं खींचें और छोड़ें नोड एक बच्चा बनाकर नोड्स: मैं इन दोनों तरीकों का उपयोग कर (TreeNode यहाँ नोड childnode कि पेड़ डाला जा रहा है है) ट्री दृश्य को पॉप्युलेट नोड सी के और डेटाबेस में परिवर्तन प्रतिबद्ध करते हैं।
अब मेरी डेटाबेस तालिका इस प्रकार है:
ID Name ParentID
======================
1 A 4
2 A1 1
3 B 0
4 C 0
5 A2 1
6 B1 3
अगली बार मैं एप्लिकेशन को चलाने के लिए, यह पेड़ में नोड A1 और A2 को भरने के लिए है क्योंकि यह उनके माता-पिता नहीं पा सके विफल रहता है। इसका कारण यह है कि जब मैं पहले treeview को आबाद करने के लिए ParentID के आधार पर पंक्तियों को सॉर्ट, पंक्तियों इस तरह हल कर रहे हैं:
ID Name ParentID
======================
3 B 0
4 C 0
2 A1 1
5 A2 1
6 B1 3
1 A 4
इस तरह, अपने आवेदन भी नोड से पहले पेड़ में A1 और A2 नोड्स को पॉप्युलेट करने की कोशिश करेंगे ए बनाया गया है। इसलिए एप्लिकेशन को नोड ए 1 और ए 2 के लिए पैरेंट नहीं मिला।
इसलिए, क्या कोई मुझे इस बग को ठीक करने का तरीका बता सकता है या क्या एक वृक्षदृश्य गतिशील रूप से पॉप्युलेट करने का एक बेहतर तरीका है?
धन्यवाद।
यहाँ देखें - http://stackoverflow.com/questions/361661/populate-treeview-from-database –
लिंक के लिए धन्यवाद! – ixora