TreeView如何加载SQL数据表
现在有SQL二张表,分别是部门表(DepartMent),人事表(Person),其架构分别如下:
DepartMent表:
各列名是:
DID:部门ID,
DepNo:部门编号
DepName:部门名称
UPID:上级部门ID
DID DepNo DepName UPID
1 10 总经办 0
2 11 综合部 0
3 1101 人事部 2
4 1102 后勤部 2
Person表:
各列名是:
PID:人员ID
DepNo:部门编号
PerNo:人员编号
PerName:人员姓名
DID:部门ID
PID DepNo PerNo PerName DID
1 10 10001 张三 1
2 1101 1101001 李四 3
3 1102 1102001 王二 4
现在想用Treeview控件显示,效果如下:
10--总经办
10001--张三
11--综合部
1101--人事部
1101001--李四
1102--后勤部
1102001--王二
请各位大侠指教并贴出代码
我的开发平台是:
VB.NET(Visual Basic)2008+SQL 2005
如果有C#的代码也要。
[解决办法]
1. 先获取全部的部门及部门下的员工信息。
DataTable dtDept = dt.DefaultView.ToTable(true, new string[] {"DDID","DepNo","DepName","UPID" });
//伪代码
DataTable dtDept = dt.DefaultView.ToTable(true, new string[] {"DDID","DepNo","DepName","UPID" });
for (int i = 0; i < dtDept.Rows.Count; i++)
{
if (dtDept.Rows[i]["UPID"].ToString().Equals("0"))
{
TreeNode node = new TreeNode();
TreeView1.Nodes.Add(node);
DataTable[] rows = //根据dtDept的数据获取的该父结点下的子结点的信息。
DataTable[] employees = //获得属于该节点的员工信息
InitEmp4Dept(node, employee); //为该结点添加员工信息
InitSubDept(node, rows, dtDept); //为该结点添加子结点,递归。
}
}
protected void InitSubDept(TreeNode node, DataRow[] subnodes, DataTable dtDept)
{
if (subnodes.Length == 0)
return;
for (int i = 0; i < subnodes.Length; i++)
{
TreeNode subnode = new TreeNode();
node.ChildNodes.Add(subnode);
DataTable[] rows = //根据dtDept的数据获取的该父结点下的子结点的信息。
DataTable[] employees = //获得属于该节点的员工信息
InitEmp4Dept(node, employee);
InitSubDept(node, rows, dtDept);
}
}
protected void InitEmp4Dept(TreeNode node, DataRow[] employees)
{
if (employees.Length == 0)
return;
for (int i = 0; i < employees.Length; i++)
{
TreeNode nodeemp = new TreeNode();
node.ChildNodes.Add(nodeemp); //添加员工信息
}
}