TreeList

来源:互联网 发布:淘宝知识产权处罚细则 编辑:程序博客网 时间:2024/06/09 14:28

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

动态加载法

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

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!




原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 8g内存只有2g可用怎么办? 三星7e微信分身打不开怎么办? 光猫的网口1不亮怎么办 两年前的发票发现名头有错误怎么办 苹果5s手机通话声音小怎么办 华为全网通手机电信卡打不了怎么办 合约机移动违约不返话费我该怎么办 电信手机卡合约套餐要到期了怎么办 苹果6s联通4g网速慢怎么办 营业厅买到的不是全网通手机怎么办 全网通手机联通卡被禁用怎么办 红米5手机关机充电自动开机怎么办 华为平板怎么解锁密码忘了怎么办 华为荣耀手机开锁密码忘记了怎么办 畅玩7x密码忘了怎么办 过了时的手机没有刷机包怎么办? 刷了个刷机包游戏玩不了了怎么办? 华为麦芒5手机外放声音小怎么办 微信显示存储卡已拔出怎么办 储存卡已拔出微信头像不可用怎么办 智能手机的电话卡取不出来了怎么办 换了苹果手机通讯录没了怎么办 手机玻璃膜一角翘起来了怎么办 华为畅玩7x耗电快怎么办 魅蓝5s充电器死机了怎么办 苹果手机乐动力不计步数怎么办 意大利居留按手印时间过了怎么办 酷派t1手机解析包出现问题怎么办 p新买的手机壳有味怎么办 门锁钥匙口竖着钥匙放不进去怎么办 摩拜单车被别人骑走了怎么办 捡到苹果8p手机怎么办才能自己用 用力按压导致玻尿酸变形移位怎么办 华为麦芒5应用锁密码忘了怎么办 华为麦芒6应用锁密码忘了怎么办 华为手机的设置不在桌面了怎么办 华为手机所有应用都不在桌面怎么办 华为麦芒5设置页面不显示怎么办 华为麦芒5主屏页面不显示怎么办 6s p换屏幕原装太贵怎么办 4g手机开不开机黑屏怎么办