利用Asp.net控件TreeView绑定数据库,我实现了树装结构的显示,并将树的每个节点设置为前面有CheckBox的类型(即ShowCheckBoxes="All")
现在想要点击父节点就选中/取消其下面的子节点,并且在选择之后点击确定按钮的时候取出选中的CheckBox对应的节点的值,请问有什么办法?

解决方案 »

  1.   

    在点击事件中:if (Tree.SelectedNode == null || Tree.SelectedNode.Tag == null) {
          return;
        }    string a =TreeView1.SelectedItem.Text.toString();    ....
      

  2.   

    oncheckchanged事件来判断循环选中下面的节点。确定按钮的事件中,遍历treeview读取当前选中的所以节点(或叶子)
      

  3.   

    点击父节点就选中/取消其下面的子节点:
    用javascript得到当前选择的父节点对象,再得到这个对象下所有tagname为input的元素,一个循环设置checked取出选中的CheckBox对应的节点的值:
    在客户端同上,得到包含整颗树容器的对象得到所有tagname为input,checked=true的值
    在服务器端,遍历整棵树得到checked=true的值
      

  4.   

    是服务器端实现……我已经用了oncheckchanged事件,不过在选中/取消的时候不会触发这个事件……非常疑惑
      

  5.   

            string checkvalue = "";
            foreach (TreeNode tn in TreeView1.CheckedNodes)
            {
                if (!tn.Value.Trim().Equals(""))
                {
                    checkvalue += tn.Value;
                    checkvalue += ",";
                }
            }
      

  6.   

    啊……我是在TreeNodeCheckChanged事件中做的是否选中子节点的操作
    不是oncheckchanged,TreeView没那个事件……
    但是在选择前面复选框的时候无法触发我所写的事件,请问要怎么做?
      

  7.   

    可是我的TreeView中并没有AutoPost这个属性……
      

  8.   


    这个事件不会在你checkchanged的事后触发,还需要submit,所以不建议用这个事件.
    第一个问题:可以用JS解决,5楼说的很清楚了.用客户端脚本
    第二个问题:服务端编写funcion,遍历树,如果checked,then treenodes.checked=true else 
    treenodes.checked=false.这样可以获得treenodes.value
      

  9.   

    请问楼主:利用Asp.net控件TreeView绑定数据库,实现了树装结构的显示。
    这个怎么做出来的呀。请您指点。谢谢您!
      

  10.   

    现在唯一没做出来的就是在选择根节点的时候下面的子节点不会被选中,在选中子节点的时候根节点也不会被选中
    逻辑关系已经判断出来了,但无法触发TreeNodeCheckChanged事件,希望大家帮想想办法,最好是在服务器端实现,我JS很烂的