TreeList

如果你要的数据是分层级的,那么这个控件非常适合您。

动态加载法

这个也有两种动态加载法:推荐!!

TreeList控件跟GridView相似。GridView是由行和列组成,而TreeList是由节点和列组成。

使用数组方式为TreeList赋值:

第一步:把DataTable转换成数组在把它绑定,这种方式要先把DataTableGroupBy一下哦,要不然可能会出现多个相同节点的。

private void LoadStaff()
        {
            dtStaff = DbHelperSQL.Query("select * from VEICompanyDeptStaff").Tables[0];//这个表已经group by好了
            int row = dtStaff.Rows.Count;//获取员工总行数
            string CompanyID = null;
            string DeptID = null;
            tlStaff.BeginUpdate();
            TreeListColumn clCompanyName = tlStaff.Columns.Add();
            clCompanyName.VisibleIndex = 0;
            clCompanyName.Caption = "公司";
            TreeListColumn clDeptName = tlStaff.Columns.Add();
            clDeptName.VisibleIndex = 1;
            clDeptName.Caption = "部门";
            TreeListColumn clStaffName = tlStaff.Columns.Add();
            clStaffName.VisibleIndex = 2;
            clStaffName.Caption = "员工";
            TreeListColumn clCompanyID = tlStaff.Columns.Add();
            clCompanyID.VisibleIndex = -1;//隐藏
            clCompanyID.Caption = "公司ID";
            TreeListColumn clDeptID = tlStaff.Columns.Add();
            clDeptID.VisibleIndex = -1;
            clDeptID.Caption = "部门ID";
            TreeListColumn clStaffID = tlStaff.Columns.Add();
            clStaffID.VisibleIndex = -1;
            clStaffID.Caption = "员工ID";
            tlStaff.EndUpdate();
            TreeListNode CoNode = null, DeptNode = null,StaffNode = null;
            tlStaff.Nodes.Clear();//清空所有节点。
            tlStaff.BeginUnboundLoad();
            //TreeList控件显示的数据一有变更,它就会刷新一次,BeginUnboundLoad()方法至EndUnboundLoad()中的代码对TreeList控件做出的更改不会使它刷新,已提升性能。
            foreach (DataRow dr in dtStaff.Rows)
            {
                if (CompanyID == null || CompanyID != dr["ID"].ToString())//如果没有该公司就添加一个根节点。
                {
                    /*
                    其实直接CoNode = tlStaff.AppendNode(new string[] { "名字", "ID" }, null);也是可以的,
                     * TreeList会自动为你传进去数组的二个字段创建两列,你在运行时刻同样可以使用代码
                     * TreeList.Columns[该列名的下标]来获取和设置它的属性
                    */
                    CoNode = tlStaff.AppendNode(null, null);
                    CoNode[clCompanyID] = dr["ID"];//为公司节点的ID列指定值
                    CoNode[clCompanyName] = dr["CompanyName"];//为公司节点的Name列指定值
                    CompanyID = dr["ID"].ToString();
                }
                if (DeptID != dr["DeptID"].ToString())//如果没有部门就在公司节点下添加一个子节点。
                {
                    DeptNode = tlStaff.AppendNode(null, CoNode);
                    DeptNode[clDeptID] = dr["DeptID"];
                    DeptNode[clDeptName] = dr["DeptName"];
                    DeptID = dr["DeptID"].ToString();
                }
                StaffNode = tlStaff.AppendNode(null, DeptNode);//添加员工子节点。
                StaffNode[clStaffName] = dr["StaffName"];
                StaffNode[clStaffID] = dr["StaffID"];
            }
            tlStaff.EndUnboundLoad();
        }

效果图:


不是很理想?那就做成一列的。把显示的这三列删掉换成一列显示。

删掉了公司、部门列后,把其他列的内容都添加到员工上面去,ID就不用了,因为它不显示。效果图:

完美的英文怎么拼来着?待我google一下,Perfect!




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值