C# 还有工作…谢谢你,卡博特。。。我试过你的答案。。。这一切都适用于节点部分。。。但是我没有看到任何叶..你确定在返回数据中的叶之前父节点就在那里吗?是的。。。父节点是第一个,我得到了所有节点,如Parent1、Parent2和Parent3,但我没有看到任何
C# 还有工作…谢谢你,卡博特。。。我试过你的答案。。。这一切都适用于节点部分。。。但是我没有看到任何叶..你确定在返回数据中的叶之前父节点就在那里吗?是的。。。父节点是第一个,我得到了所有节点,如Parent1、Parent2和Parent3,但我没有看到任何,c#,asp.net-mvc,list,extjs4,treenode,C#,Asp.net Mvc,List,Extjs4,Treenode,还有工作…谢谢你,卡博特。。。我试过你的答案。。。这一切都适用于节点部分。。。但是我没有看到任何叶..你确定在返回数据中的叶之前父节点就在那里吗?是的。。。父节点是第一个,我得到了所有节点,如Parent1、Parent2和Parent3,但我没有看到任何leafsHey Cabbott。。。我让它工作了。然而,要在我的树上获取数据需要花费很长时间。它崩溃了,但它工作了。。。有没有办法解决这个问题。。。我不确定,但我想尝试使用字典可能会有所帮助???有点像字典…谢谢你Jonn。。。但我完全使用c
还有工作…谢谢你,卡博特。。。我试过你的答案。。。这一切都适用于节点部分。。。但是我没有看到任何叶..你确定在返回数据中的叶之前父节点就在那里吗?是的。。。父节点是第一个,我得到了所有节点,如Parent1、Parent2和Parent3,但我没有看到任何leafsHey Cabbott。。。我让它工作了。然而,要在我的树上获取数据需要花费很长时间。它崩溃了,但它工作了。。。有没有办法解决这个问题。。。我不确定,但我想尝试使用字典可能会有所帮助???有点像字典…谢谢你Jonn。。。但我完全使用c#而且,我有大约500个数据和30个父节点…:)。。。我用另一种想法向您的原始问题添加了一条注释,但我这里的主要观点不是代码-这只是我测试它以确保其工作的方式-它是填充第一个(父)节点,然后使用基于父名称的Linq填充第二个。嗨,John。。。在treeNode.Nodes.Add(node1)上;“节点”上出现错误。。。它说它没有定义我至少让它运行John。。。我想你可能是指treeNode.儿童.添加(node1);。。。然而,这需要很多时间来获取我的数据,并导致它崩溃。。。有没有更有效的方法?我目前正在尝试使用字典,但运气不好
ListA ListB labelName
NY Parent1
NY Leaf1
HI Parent2
AK Parent3
SqlCommand cmd = con.CreateCommand();
comd.CommandText = "SELECT * FROM myTable";
con.Open();
SqlDataReader reader = comd.ExecuteReader();
while (reader.Read())
{
City MyData = new City();
MyData.ListA = reader["ListA"].ToString().Trim();
MyData.ListB = reader["ListB"].ToString().Trim();
MyData.labelName = reader["labelName"].ToString().Trim();
giveData.Add(MyData);
}
int count = 1;
List<TreeNode> myNode = new List<TreeNode>();
foreach (City MyData in giveData)
{
// 1st foreach
if (MyData.ListA != "")
{
TreeNode treeNode = new TreeNode();
treeNode.id = count++;
treeNode.name = MyData.labelName;
treeNode.leaf = false;
List<TreeNode> Level1 = new List<TreeNode>();
foreach (City labelName in giveData)
{
if (labelName.ListA == labelName.ListB)
{// 2nd foreach
TreeNode node1 = new TreeNode();
node1.id = count++;
node1.name = labelName.labelName;
node1.leaf = true;
Level1.Add(node1);
}
}
treeNode.children = Level1;
myNode.Add(treeNode);
}
}
return JsonConvert.SerializeObject(myNode);
var MyData = new List<City>
{
new City {ListA = "AK", ListB = "", labelName = "Alaska"},
new City {ListA = "HI", ListB = "", labelName = "Hawaii"},
new City {ListA = "", ListB = "HI", labelName = "Hawaii Leaf 1"},
new City {ListA = "", ListB = "HI", labelName = "Hawaii Leaf 2"},
new City {ListA = "NY", ListB = "", labelName = "New York"},
new City {ListA = "", ListB = "NY", labelName = "New York Leaf 1"},
new City {ListA = "", ListB = "NY", labelName = "New York Leaf 2"}
};
var index = 0;
var parents = (from p in MyData
where p.ListB == ""
select p).ToDictionary(p => p.ListA, p => new TreeNode { id = index++, name = p.labelName, leaf = false });
var leaves = (from l in MyData
where l.ListA == ""
group l by l.ListB into stateGroup
select stateGroup).ToDictionary(g => g.Key, g => g.ToList());
foreach (var leaf in leaves.Where(leaf => parents.ContainsKey(leaf.Key)))
{
parents[leaf.Key].children =
leaf.Value.Select(l => new TreeNode {id = index++, name = l.labelName, leaf = true}).ToList();
}
var myNode = parents.Select(p => p.Value).ToList();
return JsonConvert.SerializeObject(myNode);
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim x As New List(Of City)
x.Add(New City With {.ListA = "NY", .ListB = "", .Leaf = "Parent1"})
x.Add(New City With {.ListA = "", .ListB = "NY", .Leaf = "Leaf1"})
x.Add(New City With {.ListA = "HI", .ListB = "", .Leaf = "Parent2"})
x.Add(New City With {.ListA = "AK", .ListB = "", .Leaf = "Parent3"})
tv1.Nodes.AddRange((From y In x Where y.ListA <> "" Select New TreeNode With {
.Name = y.ListA,
.Text = y.Leaf}).ToArray)
For Each nd As TreeNode In tv1.Nodes
Dim Nm As String = nd.Name
nd.Nodes.AddRange((From y In x Where y.ListB = Nm Select New TreeNode(y.Leaf)).ToArray)
Next
End Sub
int count = 1;
List<TreeNode> myNode = new List<TreeNode>();
foreach (City MyData in giveData)
{
// 1st foreach
if (MyData.ListA != "")
{
TreeNode treeNode = new TreeNode();
treeNode.id = count++;
treeNode.name = MyData.labelName;
treeNode.leaf = false;
foreach (City labelName in giveData)
{
if (MyData.ListA == labelName.ListB)
{// 2nd foreach
TreeNode node1 = new TreeNode();
node1.id = count++;
node1.name = labelName.labelName;
node1.leaf = true;
treeNode.Nodes.Add(node1);
}
}
myNode.Add(treeNode);
}
}
return JsonConvert.SerializeObject(myNode);