自己在网上找了一段时间都没有找到取自数据库的值与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的节点如配置则勾选的更多相关文章

  1. easyui Tree模拟级联勾选cascadeCheck,节点选择,父节点自动选中,节点取消,父节点自动取消选择,节点选择,所有子节点全部选择,节点取消,所有子节点全部取消勾选

    最近项目中用到easyui tree,发现tree控件的cascadeCheck有些坑,不像miniui 的tree控件,级联勾选符合业务需求,所以就自己重新改写了onCheck事件,符合业务需求.网 ...

  2. TreeView CheckBox勾选联动

    http://www.cnblogs.com/excellently/p/TreeViewCheckBox.html 在C# Winform项目中用到了TreeView控件,并且需要勾选的功能.父子节 ...

  3. C# WinForm设置TreeView选中节点

    这里假定只有两级节点,多级方法类似.遍历节点,根据选中节点文本找到要选中的节点.treeView.SelectedNode = selectNode; /// <summary> /// ...

  4. TreeView 树节点的处理

    TreeView 树节点的处理 using System; using System.Collections.Generic; using System.ComponentModel; using S ...

  5. WebConfig 自定义节点configSections配置信息

    WebConfig 自定义节点configSections配置信息 示例: <configuration>   <configSections>     <!-- For ...

  6. web.config中sessionState节点的配置方案

    web.config中sessionState节点的配置方案 web.config关于sessionState节点的配置方案,sessionState有五种模式:Custom,off,inProc,S ...

  7. TreeView查获节点并选中节点

    TreeView查获节点并选中节点如果有多个节点则会继续查找下一个节点 支持关键字搜索 private void SearchNodes(string SearchText, TreeNode Sta ...

  8. TreeView中节点勾选设置

    本文转载:http://www.cnblogs.com/luxiaoxun/p/3288003.html 很不错的文章:http://www.cnblogs.com/allen0118/archive ...

  9. TreeView设置节点图标

    TreeView设置节点图标 没子节点的设置其图标为 0 有节点的设置其图标为 1 procedure TForm1.Button1Click(Sender: TObject);var   i:Int ...

随机推荐

  1. CentOS vsftpd搭建快速流程

    1.yum install vsftpd 2.chkconfig vsftpd on 3.service vsftpd start 4.adduser -d /home/bp -g ftp -s /s ...

  2. Android数据存储方式

    Android提供了5种方式存储数据: 1.使用SharedPreferences存储数据:它是Android提供的用来存储一些简单配置信息的一种机制,采用了XML格式将数据存储到设备中.只能在同一个 ...

  3. Avast!:小型网站最易遭受的3种黑客攻击

    avast是捷克研发的杀毒软件,从网站上找到一篇avast关于网站安全的文章,觉得颇有意思,因此想到翻译过来与大家共享.有不对之处还望大家批评指正. 一个拥有上万访问者的小型网站管理员发来一份信,向我 ...

  4. 【转】javascript打印设置

    页面中的代码:<OBJECT id="WebBrowser1" height="0" width="0"        classid ...

  5. mysql 找回密码方法

    1.首先确认服务器出于安全的状态,也就是没有人能够任意地连接MySQL数据库. 因为在重新设置MySQL的root密码的期间,MySQL数据库完全出于没有密码保护的 状态下,其他的用户也可以任意地登录 ...

  6. Apriori on MapReduce

    Apiroi算法在Hadoop MapReduce上的实现 输入格式: 一行为一个Bucket 1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 34 36 38 ...

  7. js数组去重的方法

    //数组去重 Array.prototype.unique = function() { var newArr = [], hash = {}; for(var i=0, len=this.lengt ...

  8. svn出现版本冲突之后的 无效路径

    .csproj.FileListAbsolute.txt  找到之后删掉错误的代码

  9. 第四篇.Bootstrap网格系统偏移列和嵌套列

    偏移列: 在bootstrap网格系统中我们可以使用偏移列来达到让某列右移的效果,如下所示: <div class="row"> <div class=" ...

  10. 曲线拟合的最小二乘法(基于OpenCV实现)

    1.原理 在现实中经常遇到这样的问题,一个函数并不是以某个数学表达式的形式给出,而是以一些自变量与因变量的对应表给出,老师讲课的时候举的个例子是犯罪人的身高和留下的脚印长,可以测出一些人的数据然后得到 ...