前台
后台
- <%@ Page Language="C#" AutoEventWireup="true" CodeFile="test_TreeView.aspx.cs" Inherits="test_test_TreeView" %>
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
- <html xmlns="http://www.w3.org/1999/xhtml" >
- <head runat="server">
- <title>无标题页</title>
- </head>
- <body>
- <form id="form1" runat="server">
- <div>
- <asp:TreeView ID="treeView1" runat="server">
- </asp:TreeView>
- </div>
- </form>
- </body>
- </html>
- using System;
- using System.Data;
- using System.Configuration;
- using System.Collections;
- using System.Web;
- using System.Web.Security;
- using System.Web.UI;
- using System.Web.UI.WebControls;
- using System.Web.UI.WebControls.WebParts;
- using System.Web.UI.HtmlControls;
- using System.Data.SqlClient;
- public partial class test_test_TreeView : System.Web.UI.Page
- {
- private DataTable tblSetOrgInfo = new DataTable();//储存读入的数据
- protected void Page_Load(object sender, EventArgs e)
- {
- Bind();
- }
- private void Bind()
- {
- string connStr = ConfigurationManager.ConnectionStrings["hrmbookConnectionString"].ToString();
- SqlConnection conn = new SqlConnection(connStr);
- try
- {
- conn.Open();
- string Sqlstr = "SELECT 内部编号, 类别, AbsIndex, ItemIndex, ItemLevel, ParentIndex, 类别号, 单位编号, "
- +"单位名称, 拼音编码, 单位地址, 单位电话号码, 开户银行, 帐号, 开户全称 FROM 组织机构编码表 ORDER BY AbsIndex";
- SqlDataAdapter da = new SqlDataAdapter(Sqlstr, conn);
- da.Fill(tblSetOrgInfo);
- DataTable tempDataTable = tblSetOrgInfo.Copy();//将组织机构表另存一份为tempDataTable
- DataView viewSetOrgInfo = new DataView(tempDataTable);//新建一个数据视图
- viewSetOrgInfo.RowFilter = "ItemLevel = 0";
- //将数据集中的所有记录逐个根据他们之间的关系添加到树形表中去
- if (viewSetOrgInfo.Count > 0)
- {
- foreach (DataRowView myRow in viewSetOrgInfo)
- {
- string strEnterpriseName = myRow["单位名称"].ToString().Trim();
- //此处是添加第一个节点“省医药集团”
- this.treeView1.Nodes.Add(new TreeNode(strEnterpriseName));
- //此处初始化参数是第一个节点“省医药集团”,然后该函数会递归添加所有子节点
- PopulateTreeView(strEnterpriseName, treeView1.Nodes[0], myRow);
- //treeView1.SelectedNode = treeView1.Nodes[0]; //选中第一个节点
- }
- }
- }
- catch (Exception ex)
- {
- Response.Write(ex.ToString());
- }
- finally
- {
- conn.Close();
- }
- }
- //---------------根据输入的节点信息,递归调用最终添加所有的节点-----------------------
- private void PopulateTreeView(string parentPart, TreeNode parentNode, DataRowView parentRow)
- {
- string strEnterpriseName = "";
- DataTable tempDataTable = tblSetOrgInfo.Copy();
- DataView viewSetOrgInfo = new DataView(tempDataTable);
- //筛选获得当前传递过来的节点的子项,并将其添加到树形图中
- //判断方法是凡parentIndex等于传递过来的节点的absIndex的,就是该节点的子项
- viewSetOrgInfo.RowFilter = "ParentIndex = '" + parentRow["AbsIndex"].ToString().Trim() + "'";
- //递归的添加每一个节点的所有子节点
- foreach (DataRowView myRow in viewSetOrgInfo)
- {
- strEnterpriseName = myRow["单位名称"].ToString().Trim();
- TreeNode myNode = new TreeNode(strEnterpriseName);
- parentNode.ChildNodes.Add(myNode);
- //函数递归调用,将所有节点按顺序添加完毕
- PopulateTreeView(strEnterpriseName, myNode, myRow);
- }
- }
- }
这篇博客介绍如何利用C#实现TreeView控件的填充,通过递归算法从数据库中获取组织机构数据,创建层次结构。文章展示了具体的代码实现,包括连接数据库、筛选数据以及递归添加节点的过程。

803

被折叠的 条评论
为什么被折叠?



