解决方案 »

  1.   

    private void GetAllNodeText(TreeNodeCollection tnc,ref string str)
    {
    foreach (TreeNode node in tnc)
    {
    if (node.Checked == true)
    {
    str += node.Text + ",";
    GetAllNodeText(node.ChildNodes,ref str);
    //Response.Write(node.Text + " ");
    }
    }
      

  2.   

    为什么我这样写我只选择了工具名称c为什么会把工具名称b和工具名称a也录入进去呢?我用你这个方法可以么???@save4me
      

  3.   

    求帮忙呀,我这里该怎么修改才能录入我选中的子节点的值呢?
     public void InserGJ()
            {
                if (this.TreeView1.CheckedNodes.Count > 0)
                {
                    try
                    {
                        string delId = ""; D_CourseWareManage d = new D_CourseWareManage();
                        if (Request.QueryString["id"] != null && Request.QueryString["id"] != "")
                        {
                            string id= Request.QueryString["id"].ToString();
                            foreach (TreeNode t in TreeView1.CheckedNodes)
                            {
                                foreach (TreeNode item in t.ChildNodes)
                                {
                                    delId += item.Value + ",";
                                }
                            }
                            //去掉最后一个,
                            delId = (delId + ")").Replace(",)", "");
                            string[] spl = delId.Split(',');
                            for (int i = 0; i < spl.Length; i++)
                            {
                                d.InserToolDistributionCourse(spl[i], id);
                            }
                        }
                    }
                    catch (Exception err)
                    {
                        ScriptManager.RegisterStartupScript(this, GetType(), "JS", "alert('" + err.Message + "')", true);
                    }
                }
            }
      

  4.   

    你看一下这样可不可以
    private void GetAllNodeText(TreeNodeCollection tnc,ref string str)
    {
    foreach (TreeNode node in tnc)
    {
    if (node.Checked == true)
    {
    str += node.Text + ",";
    GetAllNodeText(node.ChildNodes,ref str);
    //Response.Write(node.Text + " ");
    }
    }
    }public void InserGJ()
    {
    if (this.TreeView1.CheckedNodes.Count > 0)
    {
    try
    {
    string delId = ""; D_CourseWareManage d = new D_CourseWareManage();
    if (Request.QueryString["id"] != null && Request.QueryString["id"] != "")
    {
    string id= Request.QueryString["id"].ToString();
    GetAllNodeText(TreeView1.CheckedNodes,ref delId)
    //foreach (TreeNode t in TreeView1.CheckedNodes)
    //{
    //     foreach (TreeNode item in t.ChildNodes)
    //     {
    //         delId += item.Value + ",";
    //    }
    //}
    //去掉最后一个,
    delId = (delId + ")").Replace(",)", "");
    string[] spl = delId.Split(',');
    for (int i = 0; i < spl.Length; i++)
    {
    d.InserToolDistributionCourse(spl[i], id);
    }
    }
    }
    catch (Exception err)
    {
    ScriptManager.RegisterStartupScript(this, GetType(), "JS", "alert('" + err.Message + "')", true);
    }
    }
    }
      

  5.   

    不行呢,我用了你这个方法之后,我选中的是工具名称a结果录入了两个工具名称a和工具名称c是什么原因呀???@save4me
      

  6.   

    我调试了一下好像是把工具类型一1的value也给录入进去了,因为工具类型一1的value值为1而工具名称c的value值也为1所以就出现了工具名称c和工具名称a,而我只选择了一个工具名称a呀这是什么原因呀求解呀???
      

  7.   

    foreach (TreeNode t in TreeView1.CheckedNodes)
                {
                    if (t.Value != null && t.Value.Length > 0 && MyClass.IsNumber(t.Value))
                    {
                        xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
                    }
                }
    写了一个简单的代码,经过测试,可以实现,只需要赋值即可,父节点值为string类型,子节点为整型int,遍历所有节点。当然,你也可以
    protected string getParent(TreeNode currTreeNode)
        {
            string rv = "";
            if (currTreeNode.Parent != null)
            {
                rv = currTreeNode.Parent.Text;
                rv += getParent(currTreeNode.Parent);
            }        return rv;
        }
    通过获取它的父节点来判断,方法很多。
      

  8.   

    请问一下,你是怎么做到treeview支持多选的。。
          
    我怎么不能多选呢。。?