带有CheckBox的TreeList
来源:互联网 发布:域名交易平台源码 编辑:程序博客网 时间:2024/04/29 18:41
Design代码
partialclassForm1
{
///<summary>
///必需的设计器变量。
///</summary>
privateSystem.ComponentModel.IContainercomponents = null;
///<summary>
///清理所有正在使用的资源。
///</summary>
///<paramname="disposing">如果应释放托管资源,为true;否则为false。</param>
protectedoverridevoidDispose(bool disposing)
{
if(disposing && (components !=null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows 窗体设计器生成的代码
///<summary>
///设计器支持所需的方法 - 不要
///使用代码编辑器修改此方法的内容。
///</summary>
privatevoidInitializeComponent()
{
this.treeList1=new DevExpress.XtraTreeList.TreeList();
this.treeListColumn1=new DevExpress.XtraTreeList.Columns.TreeListColumn();
this.treeListColumn2=new DevExpress.XtraTreeList.Columns.TreeListColumn();
this.treeListColumn3=new DevExpress.XtraTreeList.Columns.TreeListColumn();
this.treeListColumn4=new DevExpress.XtraTreeList.Columns.TreeListColumn();
this.button1=new System.Windows.Forms.Button();
((System.ComponentModel.ISupportInitialize)(this.treeList1)).BeginInit();
this.SuspendLayout();
//
//treeList1
//
this.treeList1.Columns.AddRange(newDevExpress.XtraTreeList.Columns.TreeListColumn[]{
this.treeListColumn1,
this.treeListColumn2,
this.treeListColumn3,
this.treeListColumn4});
this.treeList1.Location=new System.Drawing.Point(2, 2);
this.treeList1.Name="treeList1";
this.treeList1.OptionsBehavior.Editable=false;
this.treeList1.OptionsMenu.EnableColumnMenu=false;
this.treeList1.OptionsView.ShowCheckBoxes=true;
this.treeList1.OptionsView.ShowIndicator=false;
this.treeList1.Size=new System.Drawing.Size(301, 377);
this.treeList1.TabIndex= 0;
this.treeList1.AfterCheckNode+=new DevExpress.XtraTreeList.NodeEventHandler(this.treeList1_AfterCheckNode);
//
//treeListColumn1
//
this.treeListColumn1.Caption="权限列表";
this.treeListColumn1.FieldName="treeListColumn1";
this.treeListColumn1.MinWidth= 32;
this.treeListColumn1.Name="treeListColumn1";
this.treeListColumn1.Visible=true;
this.treeListColumn1.VisibleIndex= 0;
this.treeListColumn1.Width= 91;
//
//treeListColumn2
//
this.treeListColumn2.Caption="treeListColumn2";
this.treeListColumn2.FieldName="treeListColumn2";
this.treeListColumn2.Name="treeListColumn2";
//
//treeListColumn3
//
this.treeListColumn3.Caption="treeListColumn3";
this.treeListColumn3.FieldName="treeListColumn3";
this.treeListColumn3.Name="treeListColumn3";
//
//treeListColumn4
//
this.treeListColumn4.Caption="treeListColumn4";
this.treeListColumn4.FieldName="treeListColumn4";
this.treeListColumn4.Name="treeListColumn4";
//
//button1
//
this.button1.Location=new System.Drawing.Point(218, 385);
this.button1.Name="button1";
this.button1.Size=new System.Drawing.Size(75, 23);
this.button1.TabIndex= 1;
this.button1.Text="确定";
this.button1.UseVisualStyleBackColor=true;
this.button1.Click+=new System.EventHandler(this.button1_Click);
//
//Form1
//
this.AutoScaleDimensions=new System.Drawing.SizeF(6F, 12F);
this.AutoScaleMode= System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize=new System.Drawing.Size(305, 417);
this.Controls.Add(this.button1);
this.Controls.Add(this.treeList1);
this.Name="Form1";
this.Text="Form1";
((System.ComponentModel.ISupportInitialize)(this.treeList1)).EndInit();
this.ResumeLayout(false);
}
#endregion
privateDevExpress.XtraTreeList.TreeListtreeList1;
privateDevExpress.XtraTreeList.Columns.TreeListColumntreeListColumn1;
privateDevExpress.XtraTreeList.Columns.TreeListColumntreeListColumn2;
privateDevExpress.XtraTreeList.Columns.TreeListColumntreeListColumn3;
privateDevExpress.XtraTreeList.Columns.TreeListColumntreeListColumn4;
privateSystem.Windows.Forms.Button button1;
}
CS代码
publicpartialclassForm1 : Form
{
///<summary>
///所有权限
///</summary>
privateList<Privilege>listPrivilege = newList<Privilege>();
///<summary>
///默认的权限
///</summary>
privateList<Privilege>listPrivilegeMoRen = newList<Privilege>();
publicForm1()
{
InitializeComponent();
InitPrivilege();
InitTreeList();
}
privatevoidInitPrivilege()
{
listPrivilege.Add(newPrivilege { PrivilegeId = 10001, PrivilegeName = "管理", ParentPrivlegeId = 1, MenuLevel = 1 });
listPrivilege.Add(newPrivilege { PrivilegeId = 10002, PrivilegeName = "系统", ParentPrivlegeId = 2, MenuLevel = 1 });
listPrivilege.Add(newPrivilege { PrivilegeId = 10003, PrivilegeName = "用户管理", ParentPrivlegeId = 1, MenuLevel = 2 });
listPrivilege.Add(newPrivilege { PrivilegeId = 10004, PrivilegeName = "修改密码", ParentPrivlegeId = 1, MenuLevel = 2 });
listPrivilege.Add(newPrivilege { PrivilegeId = 10005, PrivilegeName = "登录", ParentPrivlegeId = 2, MenuLevel = 2 });
listPrivilege.Add(newPrivilege { PrivilegeId = 10006, PrivilegeName = "文件下载", ParentPrivlegeId = 2, MenuLevel = 2 });
listPrivilegeMoRen.Add(newPrivilege { PrivilegeId = 10001, PrivilegeName = "管理", ParentPrivlegeId = 1, MenuLevel = 1 });
listPrivilegeMoRen.Add(newPrivilege { PrivilegeId = 10003, PrivilegeName = "用户管理", ParentPrivlegeId = 1, MenuLevel = 2 });
listPrivilegeMoRen.Add(newPrivilege { PrivilegeId = 10004, PrivilegeName = "修改密码", ParentPrivlegeId = 1, MenuLevel = 2 });
}
privatevoidInitTreeList()
{
List<Privilege>listRoot = listPrivilege.Where(p => p.MenuLevel == 1).ToList();
//加载所有的根节点
foreach(Privilege pri inlistRoot)
{
this.treeList1.AppendNode(newobject[]{ pri.PrivilegeName, pri.ParentPrivlegeId, pri.PrivilegeId, pri }, -1);
}
List<Privilege>listOne = listPrivilege.Where(p => p.MenuLevel == 2).ToList();
//加载一级子节点
foreach(Privilege pri inlistOne)
{
for (inti = 0; i < treeList1.Nodes.Count; i++)
{
int int_parentId = pri.ParentPrivlegeId;
if (int_parentId == (int)(treeList1.Nodes[i].GetValue(this.treeListColumn2)))
{
this.treeList1.AppendNode(newobject[]{ pri.PrivilegeName, pri.ParentPrivlegeId, pri.PrivilegeId, pri },treeList1.Nodes[i].Id);
}
}
}
//将所有的树形节点展开
this.treeList1.ExpandAll();
foreach(TreeListNode t inthis.treeList1.Nodes)
{
if(t !=null)
{
SetNodeChecked(t, listPrivilegeMoRen);
}
}
}
privatevoidtreeList1_AfterCheckNode(object sender,DevExpress.XtraTreeList.NodeEventArgs e)
{
if(e.Node ==null)
{return;}
//选中父节点,其下的所有子节点都被选中
if(e.Node.CheckState ==CheckState.Checked)
{
if (e.Node.HasChildren)
{
CheckNode(e.Node);
}
if (e.Node.ParentNode != null)
{
if (e.Node.ParentNode.CheckState != CheckState.Checked)
{
e.Node.ParentNode.CheckState= CheckState.Checked;
SetParentNodeChecked(e.Node.ParentNode);
}
}
}
if(e.Node.CheckState ==CheckState.Unchecked)
{
if (e.Node.ParentNode != null)
{
//判断一下该父节点下的子节点是否都已经处于非选中状态
if(IsAllChildrenUnChecked(e.Node.ParentNode))
{
e.Node.ParentNode.CheckState =CheckState.Unchecked;
}
}
//m_role.PrivilegesList.Remove(((Privilege)e.Node.GetValue(this.pri)));
}
//取消父节点,其下的所有子节点都是处于非选中状态
if(e.Node.CheckState ==CheckState.Unchecked)
{
if(e.Node.HasChildren)
{
ClearNode(e.Node);
}
}
if(e.Node.CheckState ==CheckState.Checked)
{
//m_role.PrivilegesList.Add(((Privilege)e.Node.GetValue(this.pri)));
}
}
privateboolIsAllChildrenUnChecked(TreeListNode tnode)
{
foreach(TreeListNode cNode intnode.Nodes)
{
if (cNode.CheckState != CheckState.Unchecked)
{
returnfalse;
}
}
returntrue;
}
privatevoidClearNode(TreeListNode node)
{
foreach(TreeListNode cNode innode.Nodes)
{
if (cNode != null)
{
cNode.CheckState =CheckState.Unchecked;
}
if (cNode.HasChildren)
{
ClearNode(cNode);
}
}
}
//如果点击了父节点,则相应的子节点全部被选中
privatevoidCheckNode(DevExpress.XtraTreeList.Nodes.TreeListNodenode)
{
foreach(TreeListNode cNode innode.Nodes)
{
if (cNode != null)
{
if (cNode.CheckState == CheckState.Unchecked)
{
cNode.CheckState = CheckState.Checked;
//m_role.PrivilegesList.Add(((Privilege)cNode.GetValue(this.pri)));
}
}
if (cNode.HasChildren)
{
CheckNode(cNode);
}
}
}
privatevoidSetNodeChecked(TreeListNode node, List<Privilege> listP)
{
if(listP !=null)
{
if (node != null)
{
for (inti = 0; i < listP.Count; i++)
{
if(listP[i] !=null && (int)node.GetValue(this.treeListColumn3)== listP[i].PrivilegeId)
{
node.CheckState = CheckState.Checked;
SetParentNodeChecked(node);
}
}
foreach (TreeListNodetnodein node.Nodes)
{
SetNodeChecked(tnode,listP);
}
}
if (node == null)
return;
}
}
//如果选中子节点,则相应的父节点都被选中
privatevoidSetParentNodeChecked(TreeListNode node)
{
try
{
if (node.ParentNode != null)
{
if (node.ParentNode.CheckState == CheckState.Unchecked)
{
node.ParentNode.CheckState =CheckState.Checked;
//m_role.PrivilegesList.Add(((Privilege)node.GetValue(this.pri)));
}
SetParentNodeChecked(node.ParentNode);
}
if (node.ParentNode == null)
return;
}
catch(Exception)
{
}
}
classPrivilege
{
///<summary>
///权限ID
///</summary>
publicintPrivilegeId { get;set;}
///<summary>
///权限名称
///</summary>
publicstringPrivilegeName { get;set;}
///<summary>
///父节点
///</summary>
publicintParentPrivlegeId { get;set;}
///<summary>
///菜单级别
///</summary>
publicintMenuLevel { get;set;}
}
privatevoidbutton1_Click(object sender, EventArgse)
{
List<int>listRolePrivelege = newList<int>();
foreach(TreeListNode tnode inthis.treeList1.Nodes)
{
GetAllPrivelege(tnode, listRolePrivelege);
}
}
//递归树,找出所有的选中权限
publicvoidGetAllPrivelege(TreeListNode tnode, List<int>listRolePrivelege)
{
if(tnode !=null)
{
if (tnode.CheckState == CheckState.Checked)
{
listRolePrivelege.Add((int)tnode.GetValue(this.treeListColumn3));
}
foreach (TreeListNodenodein tnode.Nodes)
{
GetAllPrivelege(node, listRolePrivelege);
}
}
else
{
return;
}
}
}
- 带有CheckBox的TreeList
- TreeList带有CheckBox
- TreeList带有CheckBox
- 带有checkbox的权限树
- 带有checkbox的jstree封装
- TreeList 树形控件 实现带三种状态的CheckBox
- TreeList 树形控件 实现带三种状态的CheckBox
- 带有checkbox的树的操作(Extjs)
- 简单的自定义带有动画的checkbox
- Devexpress TreeList CheckBox 复选框
- TreeList CheckBox 父子节点联动
- 创建一个带有CheckBox的TreeView
- IconCheckBoxPreference: 一个带有图标的CheckBox preference
- 创建一个带有CheckBox的TreeView
- Android-带有切换动画的CheckBox
- Android 带有切换动画的CheckBox。
- 写了一个简单的带有CheckBox的Tree[Swing]
- 带有CheckBox的CListCtrl中Check状态的获取
- HDU 2578 - Dating with girls(1)
- 3 sum
- BFS判断是否是二分图Bipartite算法
- js学习小结(十四)2014.5.23(onpropertychange、oninput、onchange的区别与联系以及正则表达式的应用)
- NanShan 一段非常简单的文件查询代码
- 带有CheckBox的TreeList
- 发送TCP包
- IBM技术俱乐部主席竞选
- Linux Document Collections
- 《Javascript权威指南》学习笔记之十一:处理字符串---String类和正则表达式
- C基础
- 端口
- 剑指offer面试题19
- python 搭建服务器