TreeList

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

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

动态加载法

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

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!




原创粉丝点击