如何通过数据结构来构造web中的TreeView?
数据为:01 票据管理
0101 输入
0102 查询
0103 认证
0104 记账记录
0105 管理票据
02 采购管理
0201 合同输入
03 销售管理
0301 合同输入
0302 发货
0303 结算
0304 发票
0305 收款
0306 报表
0307 设置
04 文件管理
05 系统设置
0501 编辑用户
050101 查询
050102 新增
050103 修改
050104 删除
0502 设置权限
050201 查询
050202 新增
050203 修改
050204 删除
0503 基础设置
我现在写的代码只能构造到二级,请各位前辈指点,谢谢
我的代码:
private void BindRolesTree()//创建权限树状结构
{
DataTable dt = Roles.BindRolesTree().Tables["RolesTreeTB"];
TreeNode RootNode_0 = new TreeNode();
for (int i = 0; i < dt.Rows.Count; i++)
{
TreeNode RootNode_1 = new TreeNode();
TreeNode RootNode_2 = new TreeNode();
if (dt.Rows[i]["Module_ID"].ToString().Length == 2)//Module_ID的记录为:01 0101 010101 010102 02 0201 020101 020102
{
RootNode_1.Value = dt.Rows[i]["Module_ID"].ToString();//节点Value值
RootNode_1.Text = dt.Rows[i]["Module_ID"].ToString() + " " + dt.Rows[i]["Module_Name"].ToString();//节点Text值
TVModdleInfo.Nodes.Add(RootNode_1);
TVModdleInfo.Nodes[0].SelectAction = TreeNodeSelectAction.None;
RootNode_0 = RootNode_1;
}
else if (dt.Rows[i]["Module_ID"].ToString().Length == 4)
{
RootNode_1.Value = dt.Rows[i]["Module_ID"].ToString();
RootNode_1.Text = dt.Rows[i]["Module_ID"].ToString() + " " + dt.Rows[i]["Module_Name"].ToString();
RootNode_0.ChildNodes.Add(RootNode_1);//该节点加入到上级节点中
RootNode_0.SelectAction = TreeNodeSelectAction.None;
}
else
{
RootNode_2.Value = dt.Rows[i]["Module_ID"].ToString();
RootNode_2.Text = dt.Rows[i]["Module_ID"].ToString() + " " + dt.Rows[i]["Module_Name"].ToString();
RootNode_1.ChildNodes.Add(RootNode_2);//该节点加入到上级节点中
RootNode_1.SelectAction = TreeNodeSelectAction.None;
}
TVModdleInfo.ExpandAll();
}
} --------------------编程问答-------------------- 这种数据表中应该有parent_id(父节点)字段吧
--------------------编程问答-------------------- 如果没有就给它加个parent_id字段,然后像我上面发的代码那样递归绑定 --------------------编程问答--------------------
protected void CreateNavTree(TreeView NavTree, DataTable dt)
{
NavTree.Nodes.Clear();
TreeNode Node = new TreeNode();
Node.Text = "全部";
Node.Value = "";
Node.NavigateUrl = "";
NavTree.Nodes.Add(Node);
this.InitTree(dt, NavTree.Nodes[0].ChildNodes, "", "dept_id", "dept_name");
Node.Select();
Node.Expand();
}
protected void InitTree(DataTable TreeTable, TreeNodeCollection ThisCollection, string Parent_Id, string KeyFieldName, string NodeTextFieldName)
{
DataView tmpDataView = new DataView();
TreeNode Node;
tmpDataView.Table = TreeTable;
if (!String.IsNullOrEmpty(Parent_Id))
{
tmpDataView.RowFilter = "parent_id='" + Parent_Id + "'";
}
else
{
tmpDataView.RowFilter = "parent_id is null";
}
foreach (DataRowView RowView in tmpDataView)
{
Node = new TreeNode();
Node.Text = RowView[NodeTextFieldName].ToString();
Node.Value = RowView[KeyFieldName].ToString();
//Node.NavigateUrl = string.Format("javascript: TreeNodeClick('{0}')", RowView[KeyFieldName].ToString());
ThisCollection.Add(Node);
InitTree(TreeTable, Node.ChildNodes, RowView[KeyFieldName].ToString(), KeyFieldName, NodeTextFieldName);
}
}
两位的就是父结点,四位的是它的下级,六位的是下下级!
我的数据已经排序好了,能否直接构成
如
01一级
0101二级
010101易做图
010102易做图
初学的,能否详细的说一下呢?谢谢
补充:.NET技术 , C#