TreeView动态生成多层树结构

来源:互联网 发布:js图片点击放大缩小 编辑:程序博客网 时间:2024/04/28 21:28

    1、TreeView动态生成多层树结构;

    public static string ConnectionString = "Data Source=ORCL18;user =delit;password=delit;";
    public static OracleConnection con = new OracleConnection(ConnectionString);
    DataSet ds;
    DataSet ds1;
    DataTable dt = null;
    DataTable dt1 = null;
    public string stry = null;
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            con.Open();
            this.createDataSet();
            this.createData();
            con.Close();
            //this.initTree(TreeView1.Nodes, "1");
            initTreeBegin();
            //TreeView1.CheckedNodes

        }
    }

    private DataSet createDataSet()
    {
        ds = new DataSet();
        string sqlstr = "select DEPT_ID,UPPER_ID,SORT_ORDER,DEPT_NAME,DEPT_LEVEL from sa_dept_dict order by dept_level ,SORT_ORDER";
        OracleDataAdapter dataAda = new OracleDataAdapter(sqlstr, con);
        dataAda.Fill(ds);
        return ds;
    }
    private DataSet createData()
    {
        ds1 = new DataSet();
        string sqlstr1 = "select a.*,b.user_name from sa_staff_role a left join sa_staff_info b on a.user_id=b.id   order by a.dept_id ,a.sort_order ";
        OracleDataAdapter dataA = new OracleDataAdapter(sqlstr1, con);
        dataA.Fill(ds1);
        dt1 = ds1.Tables[0];
        return ds1;
    }
    /// <summary>
    /// 取出第首节点;
    /// </summary>
    private void initTreeBegin()
    {
        dt = ds.Tables[0];
        DataRow[] drs=  dt.Select("upper_id=-1");
        TreeNode firstNode = new TreeNode();
        firstNode.Text = drs[0]["DEPT_NAME"].ToString();
        firstNode.Value = drs[0]["dept_id"].ToString();
        this.TreeView1.Nodes.Add(firstNode);
        initNodeChild(firstNode, Convert.ToInt32( drs[0]["dept_id"]));
    }
    /// <summary>
    /// 循环取出所有节点;
    /// </summary>
    /// <param name="node"></param>
    /// <param name="id"></param>
    private void initNodeChild(TreeNode node,int id)
    {
       
        DataRow[] drs = dt.Select(string.Format("upper_id={0}", id));
       
        for (int i = 0; i < drs.Length; i++)
        {
            TreeNode node1 = new TreeNode();          
            node1.Text = drs[i]["DEPT_NAME"].ToString();
            node1.Value = drs[i]["dept_id"].ToString();
            //stry = node1.Value;
            node.ChildNodes.Add(node1);
            initNodeChild(node1, Convert.ToInt32(drs[i]["dept_id"]));
        }
        //取出每个部门下每个人员;
        DataRow[] drs1 = dt1.Select(string.Format("dept_id={0}", id));
        for (int i = 0; i < drs1.Length; i++)
        {
            TreeNode node2 = new TreeNode();
            node2.Text = drs1[i]["user_name"].ToString();
            node2.Value = drs1[i]["user_id"].ToString();
            node.ChildNodes.Add(node2);
        }
    }

 

运行结果:

 

 

原创粉丝点击