将部门数据(参照U8 Department表结构)绑定到TreeView

image
DataSet objDataSet = new DataSet();
public RFrmDepartment()
{
    InitializeComponent();
}

 

private void RFrmDepartment_Load(object sender, EventArgs e)
{
    string sqlCmd = "Select * from Department order by DepGrade";
    DataTable dt= DbHelperSQL.GetDataTable(sqlCmd);
    dt.TableName = "Department";
    objDataSet.Tables.Add(dt);
    TreeNode rootNode = new TreeNode("某公司部门管理");
    treeView1.Nodes.Add(rootNode);
    BindTreeNodeData(rootNode,"",0,"1");
}

        /// <summary>
       /// 将数据绑定到treeView控件上
       /// </summary>
       /// <param name="ParentNode">父节点</param>
       /// <param name="pid">父Id(指DepId)</param>
       /// <param name="Plen">父id(指DepId)长度</param>
       /// <param name="level">级别</param>

private void BindTreeNodeData(TreeNode ParentNode,string pid,int Plen,string level)
{     //如果为第一级别直接添加到父节点
        if (level=="1")
    {
        DataRow[] rows = objDataSet.Tables["Department"].Select("DepGrade=" + level);
        if (rows.Length != 0)
        {
            foreach (DataRow dr in rows)
            {
                string parentId = dr["DepId"].ToString().Trim();
                int len = parentId.Length;
                TreeNode node = new TreeNode();
                node.Text = dr["DepName"].ToString();
                ParentNode.Nodes.Add(node);
                string levels = (int.Parse(dr["DepGrade"].ToString()) + 1).ToString();
                BindTreeNodeData(node, parentId, len, levels);
            }
        }
        else return;
    }
    else  //如果为非第一级别,则从第一位开始,长度为“父DepId”截取“DepId” 判断是否相等。
    {
        DataRow[] rows = objDataSet.Tables["Department"].Select("DepGrade=" + level);
        if (rows.Length != 0)
        {
            foreach (DataRow dr in rows)
            {
                string depId = dr["DepId"].ToString().Substring(0, Plen);
                if (depId == pid)
                {
                    TreeNode node = new TreeNode();
                    node.Text = dr["DepName"].ToString();
                    string parentId = dr["DepId"].ToString().Trim();
                    int len = parentId.Length;
                    ParentNode.Nodes.Add(node);
                    string levels = (int.Parse(dr["DepGrade"].ToString()) + 1).ToString();
                    BindTreeNodeData(node, parentId, len, levels);
                }

            }
        }
        else return;
    }
}

image

说明:本人技术水平不好,此篇专供大家指正。请大家提供更好的方法。谢谢。

转载于:https://www.cnblogs.com/Kokeng/p/4764569.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值