使用递归方法遍历TreeView的节点如配置则勾选
生活随笔
收集整理的這篇文章主要介紹了
使用递归方法遍历TreeView的节点如配置则勾选
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
自己在網(wǎng)上找了一段時間都沒有找到取自數(shù)據(jù)庫的值與TreeView中的節(jié)點值進行對比如匹配則勾選中CheckBox的資料,后面自己寫了一個遞歸方法實現(xiàn),現(xiàn)在記錄起來以備需要時使用。在沒寫這遞歸方法前如果需要一個一個對比深度為4的TreeView 需要不少于5個for循環(huán),寫太多內嵌的for循環(huán)覺得不好,因此寫了以下的方法。
?
?
/// <summary>/// 遞歸實現(xiàn)與TreeView節(jié)點值對比,如相同則該節(jié)點的CheckBox=True/// </summary>/// <param name="parentNode">節(jié)點</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();//根據(jù)角色名選查看所擁有的菜單權限DataTable dt = menuPerBll.GetListOfRoleId(Convert.ToInt32(labRoleId.Text)).Tables[0];//根據(jù)所選角色勾選已擁有的菜單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 = "";}}?
轉載于:https://www.cnblogs.com/lichengcai/p/4437599.html
總結
以上是生活随笔為你收集整理的使用递归方法遍历TreeView的节点如配置则勾选的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【撸码师备忘录】腾讯API接入列表
- 下一篇: 几种C++ std::string和st