110,533
社区成员
发帖
与我相关
我的任务
分享
var node = new TreeNode { Text = "省", Value = id };
tr.Nodes.Add(node);
扩展行政区树(node);
private void 扩展行政区树(TreeNode node)
{
var parentId = node.Value;
foreach (行政区 x in 查询某行政区下属的行政区列表(parentId))
{
var n = new TreeNode { Text = x.名称, Value = x.id };
node.ChildNodes.Add(node);
扩展行政区树(n);
}
}
我这里是随便写的代码,不一定没有语法错误。你应该理解其算法逻辑,使用其编程模式(而不是代码)。var node = new TreeNode { Text = "省", Value = id };
tr.Nodes.Add(node);
扩展行政区树(tr.Nodes);
private void 扩展行政区树(TreeNodeCollection treeNodeCollection)
{
foreach (TreeNode n in treeNodeCollection)
{
var parentId = n.Value;
foreach (行政区 x in 查询某行政区下属的行政区id列表(parentId))
{
var node = new TreeNode { Text = x.名称, Value = x.id };
n.ChildNodes.Add(node);
}
扩展行政区树(n.ChildNodes);
}
}
对于某个树节点下面的每一个节点n,首先加载下一层节点,然后递归这个节点n。这是一个左子树深度优先递归的过程。
[Table("dbo.TB_area"]
public class Area {
[Column("A_code")] public int Code { get; set; }
[Column("A_Name")] public string Name { get; set; }
[Column(" A_ParentCode")] public int? ParentCode { get; set; }
}
// 获取数据 在 form 中的代码
// 全局变量
List<Area> areas;
// init or form load
using(var dc = new System.Data.Linq.DataContext("连接字符串")) {
areas = dc.GetTable<Area>().ToList();
}
// 接下来你就可以使用 linq 操作数据了。
private void LoadTree(TreeNodeCollection tnc,int nParent){
foreach(var v in "select * from tb_xxx where a_parentcode = nParent"){
TreeNode node = new TreeNode(v.a_name);
tnc.Nodes.Add(node);
LoadTree(node.Nodes,v.a_code);//递归节点
}
}
//========
this.LoadTree(treeView.Nodes,"");