在mobile里使用TreeView控件时,控件本身没有提供节点复选框选择判断逻辑。

如选中父节点,所有子节点全部选中;

取消父节点,同时也取消所有子节点;

或者选中所有子节点,父节点自动选中等等。

以下代码能够实现:

view plaincopy to clipboardprint?

  1. /// <summary>
  2. /// 复选框点击事件
  3. /// </summary>
  4. /// <param name="sender"></param>
  5. /// <param name="e"></param>
  6. private void tvPeople_AfterCheck(object sender, TreeViewEventArgs e)
  7. {
  8. if (e.Action != TreeViewAction.Unknown)
  9. {
  10. if (e.Node.Nodes.Count > 0)
  11. {
  12. this.CheckAllChildNodes(e.Node, e.Node.Checked);
  13. }
  14. CheckParentNodes(e.Node);
  15. }
  16. }
  17. /// <summary>
  18. /// 递归设置子节点
  19. /// </summary>
  20. /// <param name="treeNode">节点对象</param>
  21. /// <param name="nodeChecked">是否选择</param>
  22. private void CheckAllChildNodes(TreeNode treeNode, bool nodeChecked)
  23. {
  24. foreach (TreeNode node in treeNode.Nodes)
  25. {
  26. node.Checked = nodeChecked;
  27. if (node.Nodes.Count > 0)
  28. {
  29. this.CheckAllChildNodes(node, nodeChecked);
  30. }
  31. }
  32. }
  33. /// <summary>
  34. /// 递归设置父节点
  35. /// </summary>
  36. /// <param name="treeNode"></param>
  37. private void CheckParentNodes(TreeNode treeNode)
  38. {
  39. if (null != treeNode.Parent)
  40. {
  41. int count = treeNode.Parent.Nodes.Count;
  42. if (treeNode.Checked == true)
  43. {
  44. for (int i = 0; i < count; i++)
  45. {
  46. if (treeNode.Parent.Nodes[i].Checked == false)
  47. break;
  48. if (i == count - 1)
  49. treeNode.Parent.Checked = true;
  50. }
  51. }
  52. else
  53. {
  54. for (int i = 0; i < count; i++)
  55. {
  56. if (treeNode.Parent.Nodes[i].Checked == true)
  57. break;
  58. if (i == count - 1)
  59. treeNode.Parent.Checked = false;
  60. }
  61. }
  62. CheckParentNodes(treeNode.Parent);
  63. }
  64. }

转载于:https://www.cnblogs.com/flyptt/archive/2012/01/09/2317542.html

TreeView复选框选择逻辑判断相关推荐

  1. php表单复选传值,jQuery+SpringMVC中的复选框选择与传值实例_jquery

    下面我就为大家分享一篇jQuery+SpringMVC中的复选框选择与传值实例,具有很好的参考价值,希望对大家有所帮助. 一.checkbox选择 在jQuery中,选中checkbox通用的两种方式 ...

  2. 请使用复选框选择_使用可选是可选的

    请使用复选框选择 在上周"收藏中的可选内容"的文章发表之后,我不禁要多讲一些关于同一只野兽的事情. 更多细节. 最初由Google Guava引入并后来包含在Java 8软件包中的 ...

  3. 个人总结1[检查复选框选择个数:]

    检查复选框选择个数: function checkednum(id) {  var s;  s=0;  for(i=0;i<document.selectform.keyVal.length;i ...

  4. 复选框 遍历选中 php,jQuery的复选框选择并且获取值

    这次给大家带来jQuery的复选框选择并且获取值,jQuery复选框选择并且获取值的注意事项有哪些,下面就是实战案例,一起来看一下. 一.checkbox选择 在jQuery中,选中checkbox通 ...

  5. 复选框选择变化(可以演化成简单的字符串拼接)

    //显示选中的文字 private void showText(string title) {//定义空字符串 string str = string.Empty;//以下确认该字符串的值 if (c ...

  6. 在WPF TreeView中使用复选框

    目录 介绍 背景 细节决定成败 功能要求 将Smarts放入ViewModel 树视图配置 将TreeViewItem变成ToggleButton Aero主题中的复选框错误 介绍 本文回顾了一个WP ...

  7. php一些单选、复选框的默认选择方法

    [1]radio和checkbox及php select默认选择的实现代码     来源: 互联网  发布时间: 2013-12-24 1.radio单选框的默认选择实现 代码示例: <inpu ...

  8. jQuery分别获取选中的复选框值

    jQuery分别获取选中的复选框值 原文:jQuery分别获取选中的复选框值 function jqchk(){  //jquery获取复选框值    var s='';    $('input[na ...

  9. JS jQuery分别获取选中的复选框值

    转载地址 http://hi.baidu.com/lipan4/blog/item/8531c62330ee73b04623e886.html <!DOCTYPE html PUBLIC &qu ...

最新文章

  1. Codeforces Round #700 (Div. 2) D2 Painting the Array II(最通俗易懂的贪心策略讲解)看不懂来打我 ~
  2. response.sendRedirect()重新定向的乱码问题
  3. 屏蔽朋友圈的第一天的感悟
  4. ITK:使用Otsu方法将前景和背景分开
  5. Cheerleaders【容斥】
  6. S3C DMA使用方法,2410-2440 dma介绍
  7. [你必须知道的.NET] 调试技巧 - DebuggerDisplayAttribute
  8. 如何在福昕阅读器上将 pdf 文档背景色改为绿豆沙
  9. Oracle / PLSQL函数 - LENGTH和LENGTHB
  10. 【数据分析入门】R语言绘图语句总结
  11. 数据库上机实验八(视图)
  12. opencv-python cv2.VideoWriter() 导出视频无法播放的四个原因
  13. 写一个商品类Goods,属性有商品编号,商品名称,商品价格和上架时间。
  14. 【UI自动化设计模式】超越 Page Objects:使用Serenity和ScreenplayPattern实现新一代的自动化测试
  15. 调节latex表格中的字体大小
  16. 机器学习基础——分类算法之决策树、随机森林、Titanic乘客生存分类
  17. 1.1[潜心创作]冒险游戏(MineCraft)不喜勿喷
  18. 多层select,一定要仔细从里到外一层一层的剥开
  19. 从SRCNN到EDSR,总结深度学习端到端超分辨率方法发展历程 2018.11 写的还可以
  20. android定时调用gc,Android性能:远程触发GC

热门文章

  1. Unix信号处理一些笔记
  2. Cassandra学习手册之一:Cassandra介绍
  3. 设计模式--简单工厂模式
  4. Mysql入门实战中
  5. HDU Problem 1272 小希的迷宫 【并查集】
  6. Skype for Business Server 2015-12-WAP-发布-2-邮件服务器
  7. CentOS6.3 下启动Oracle service和listener
  8. Python爬虫-04:贴吧爬虫以及GET和POST的区别
  9. DRCNN超分辨重建2016年
  10. 268. Missing Number