使用递归方法遍历TreeView的节点如配置则勾选
自己在网上找了一段时间都没有找到取自数据库的值与TreeView中的节点值进行对比如匹配则勾选中CheckBox的资料,后面自己写了一个递归方法实现,现在记录起来以备需要时使用。在没写这递归方法前如果需要一个一个对比深度为4的TreeView 需要不少于5个for循环,写太多内嵌的for循环觉得不好,因此写了以下的方法。
/// <summary>
/// 递归实现与TreeView节点值对比,如相同则该节点的CheckBox=True
/// </summary>
/// <param name="parentNode">节点</param>
/// <param name="value">对比值</param>
private void SetTreeViewChecked(TreeNode parentNode, int value)
{
foreach (TreeNode node in parentNode.ChildNodes)
{
if (node.Value == value.ToString())
{
node.Checked = true;
}
if (node.ChildNodes.Count > 0)
{
SetTreeViewChecked(node, value);
}
}
} //获取最后一次选择CheckBoxList勾选中的值
protected void CheckRole_SelectedIndexChanged(object sender, EventArgs e)
{
string s = Request.Form["__EVENTTARGET"];
int index = Convert.ToInt32(s.Substring(s.LastIndexOf("$") + 1));
BindListView(TreeViewMenu);//重新加载菜单
TreeViewMenu.ExpandAll();
if (CheckRole.Items[index].Selected)
{
labRoleId.Text = CheckRole.Items[index].Value.ToString();
labRole.Text = CheckRole.Items[index].Text.ToString();
//根据角色名选查看所拥有的菜单权限
DataTable dt = menuPerBll.GetListOfRoleId(Convert.ToInt32(labRoleId.Text)).Tables[0];
//根据所选角色勾选已拥有的菜单
if (dt.Rows.Count > 0)
{
for (int j = 0; j < dt.Rows.Count; j++)
{
for (int i = 0; i < TreeViewMenu.Nodes.Count; i++)
{
SetTreeViewChecked(TreeViewMenu.Nodes[i], Convert.ToInt32(dt.Rows[j]["MenuId"].ToString())); //对比如值匹配的则checkBox的checked=true
}
}
}
}
else
{
labRoleId.Text = "";
labRole.Text = "";
}
}
使用递归方法遍历TreeView的节点如配置则勾选的更多相关文章
- easyui Tree模拟级联勾选cascadeCheck,节点选择,父节点自动选中,节点取消,父节点自动取消选择,节点选择,所有子节点全部选择,节点取消,所有子节点全部取消勾选
		
最近项目中用到easyui tree,发现tree控件的cascadeCheck有些坑,不像miniui 的tree控件,级联勾选符合业务需求,所以就自己重新改写了onCheck事件,符合业务需求.网 ...
 - TreeView CheckBox勾选联动
		
http://www.cnblogs.com/excellently/p/TreeViewCheckBox.html 在C# Winform项目中用到了TreeView控件,并且需要勾选的功能.父子节 ...
 - C# WinForm设置TreeView选中节点
		
这里假定只有两级节点,多级方法类似.遍历节点,根据选中节点文本找到要选中的节点.treeView.SelectedNode = selectNode; /// <summary> /// ...
 - TreeView 树节点的处理
		
TreeView 树节点的处理 using System; using System.Collections.Generic; using System.ComponentModel; using S ...
 - WebConfig 自定义节点configSections配置信息
		
WebConfig 自定义节点configSections配置信息 示例: <configuration> <configSections> <!-- For ...
 - web.config中sessionState节点的配置方案
		
web.config中sessionState节点的配置方案 web.config关于sessionState节点的配置方案,sessionState有五种模式:Custom,off,inProc,S ...
 - TreeView查获节点并选中节点
		
TreeView查获节点并选中节点如果有多个节点则会继续查找下一个节点 支持关键字搜索 private void SearchNodes(string SearchText, TreeNode Sta ...
 - TreeView中节点勾选设置
		
本文转载:http://www.cnblogs.com/luxiaoxun/p/3288003.html 很不错的文章:http://www.cnblogs.com/allen0118/archive ...
 - TreeView设置节点图标
		
TreeView设置节点图标 没子节点的设置其图标为 0 有节点的设置其图标为 1 procedure TForm1.Button1Click(Sender: TObject);var i:Int ...
 
随机推荐
- FZU 2150 Fire Game
			
Fire Game Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Submit St ...
 - C++调用约定和名字约定
			
C++调用约定和名字约定 转自http://www.cppblog.com/mzty/archive/2007/04/20/22349.html 调用约定:__cdecl __fastcall与 __ ...
 - A 标签的背景
			
a { -webkit-tap-highlight-color: transparent; -webkit-touch-callout: none; -webkit-user-select: ...
 - SQL基础语句(提升)
			
1.复制表(只复制结构,源表名:a 新表名:b) select * into b from a where 1<>1 2.拷贝表 insert into b(a,b,c) select d ...
 - HDFS副本存放策略
			
在client向DataNode写入block之前,会与NameNode有一次通信,由NameNode来选择指定数目的DataNode来存放副本.具体的副本选择策略在BlockPlacementPol ...
 - 如何快速掌握一款新的MCU? (转)
			
发布时间:2013-12-15 10:27:51 技术类别:单片机 个人分类:话题思考 任何一款MCU,其基本原理和功能都是大同小异,所不同的只是其外围功能模块的配置及数量.指 ...
 - <java基础学习>RE 基础语法(2)
			
Java Modifiers(java修饰符): Like other languages, it is possible to modify classes, methods, etc., by u ...
 - [Linux-脚本]排序、统计、合并命令
			
1.排序命令 - sort: sort可以帮我们进行排序,排序顺序按照LANG(语系环境变量)确定.据观察,sort排序以行为单位进行.排序以第一个不相同的字符决定先后顺序(只与第一个不相同的字符相关 ...
 - em 和 px相互转换
			
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...
 - C++关于Condition Variable
			
#include <condition_variable> #include <mutex> #include <future> #include <iost ...