function getV()
        {
     var pNode=TreeView1.getTreeNode(TreeView1.clickedNodeIndex)
document.all("Hidden1").value=document.all("Hidden1").value+pNode.getAttribute("ID")+",";        }
老大,按照你现在的做法取已经取到,但是每当在产品前面打了勾以后如果再去掉,那么hidden里面还是会放进这个值!并且会放两次,有办法去掉这种情况吗?就是打了勾以后如果再去掉,那么就不要存放这个值??

解决方案 »

  1.   

    document.all("Hidden1").value=""
    function getV()
            {
         var pNode=TreeView1.getTreeNode(TreeView1.clickedNodeIndex)
    if(document.all("Hidden1").value.indexOf(pNode.getAttribute("ID")+",")==-1)
    document.all("Hidden1").value=document.all("Hidden1").value+pNode.getAttribute("ID")+",";        }
      

  2.   

    function getV()
            {
             var pNode=TreeView1.getTreeNode(TreeView1.clickedNodeIndex)
             if (pNode.getAttribute("checked")==true)
             {
               document.all("Hidden1").value=document.all("Hidden1").value+pNode.getAttribute("ID")+",";
              }
            
            }
      

  3.   

    document.all("Hidden1").value="";js遍历所有节点
    //只针对根结点,大家把它可改为递归形式
    var NodeArray=new Array();
    NodeArray=TreeView1.getChildren();
    for(i=0;i<NodeArray.length;i++)
    {
    cNode=NodeArray[i];
    var pNode=TreeView1.getTreeNode(TreeView1.clickedNodeIndex)
             if (pNode.getAttribute("checked")==true)
             {
               document.all("Hidden1").value=document.all("Hidden1").value+pNode.getAttribute("ID")+",";
              }
    }
      

  4.   

    to:goody9807() ( ) 
    我用这样的方法当取消了勾以后,这个产品id还是会保存到hidden里面??
      

  5.   

    我告诉你的是思路 代码还要你自己调式getV()函数是每次触发的事件,我的思路是上来先把hidden清空,然后遍历树节点,如果选中的就加到hidden中去,这样可以保证你把钩点下去时,在hidden中可以取消这个不选的节点
      

  6.   

    http://www.codeproject.com/useritems/ClientSideTreeView.asp
      

  7.   

    document.all("Hidden1").value="";js遍历所有节点
    //只针对根结点,大家把它可改为递归形式
    var NodeArray=new Array();
    NodeArray=TreeView1.getChildren();
    for(i=0;i<NodeArray.length;i++)
    {
    cNode=NodeArray[i];
    var pNode=TreeView1.getTreeNode(TreeView1.clickedNodeIndex)
             if (pNode.getAttribute("checked")==true)
             {
               document.all("Hidden1").value=document.all("Hidden1").value+pNode.getAttribute("ID")+",";
              }
    }
    我按照这样的写法一插会同时插入5个相同的id??
      

  8.   


    只能用非递归,我试了递归的方法有问题,因为地节点ID不唯一,所以只能用笨方法了
    function getV()
    {document.all("Hidden1").value="";
     var NodeArray1=new Array();
    NodeArray1=TreeView1.getChildren()[0].getChildren();
       
    for(var i=0;i<NodeArray1.length;i++)
    {
    var cNode=NodeArray1[i];
    var NodeArray2=new Array();
              NodeArray2=cNode.getChildren();
    for(var j=0;j<NodeArray2.length;j++)
    {
    var pNode=NodeArray2[j];
    if (pNode.getAttribute("checked")==true)
    {
    document.all("Hidden1").value=document.all("Hidden1").value+pNode.getAttribute("ID")+"#";
    }
    }
    }
    NodeArray1=TreeView1.getChildren()[1].getChildren();
       
    for(var i=0;i<NodeArray1.length;i++)
    {
    var cNode=NodeArray1[i];
    var NodeArray2=new Array();
              NodeArray2=cNode.getChildren();
    for(var j=0;j<NodeArray2.length;j++)
    {
    var pNode=NodeArray2[j];
    if (pNode.getAttribute("checked")==true)
    {
    document.all("Hidden1").value=document.all("Hidden1").value+pNode.getAttribute("ID")+"#";
    }
    }
    }
    alert(document.all("Hidden1").value);
    }
      

  9.   

    不可能的对了 你还要改cs代码所有的Node.Expanded =true; 都是true 即都让它展开 
      

  10.   

    就改了一处
    private void Page_Load(object sender, System.EventArgs e)
    {
    TreeView1.Attributes.Add("oncheck","getV();");
    if (!IsPostBack)
    {
    string SelectMember_Name="SELECT * from Product_Class";

    SqlConnection myConnection = new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["ConnectionString2"]);
    myConnection.Open();
    SqlCommand cmd1 = new SqlCommand(SelectMember_Name,myConnection);
    SqlDataAdapter adp = new SqlDataAdapter(SelectMember_Name,myConnection);
    DataSet ds=new DataSet();
    adp.Fill(ds);
    this.ViewState["ds"]=ds; 
    AddTree(0, (TreeNode)null);
    }
    }
    public void AddTree(int Parent,TreeNode pNode) 
    { DataSet ds=(DataSet) this.ViewState["ds"]; 
    DataView dvTree = new DataView(ds.Tables[0]);
    //&sup1;&yacute;&Acirc;&Euml;ParentID,&micro;&Atilde;&micro;&frac12;&micro;±&Ccedil;°&micro;&Auml;&Euml;ù&Oacute;&ETH;×&Oacute;&frac12;&Uacute;&micro;&atilde;
    dvTree.RowFilter =  "[Parent] = " + Parent;
    if (dvTree.Count ==0)
    {

    string SelectMember_Name="SELECT distinct(dbo.Product_Class.Product_Class_id), dbo.Product_List.Name AS Pname FROM dbo.Product_Class LEFT OUTER JOIN dbo.Product_List ON dbo.Product_Class.Product_Class_id = dbo.Product_List.Product_Class_ID";
    SqlConnection myConnection = new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["ConnectionString2"]);
    myConnection.Open();
    SqlCommand cmd1 = new SqlCommand(SelectMember_Name,myConnection);
    SqlDataAdapter adp = new SqlDataAdapter(SelectMember_Name,myConnection);
    DataSet ds1=new DataSet();
    adp.Fill(ds1);
    DataView dv = new DataView(ds1.Tables[0]);
        dv.RowFilter="[Product_Class_id]= "+Parent;
    foreach(DataRowView Row in dv) 
    {
      TreeNode Node=new TreeNode() ;
    Node.Text = Row["Pname"].ToString();
    Node.CheckBox =true;
    Node.Expanded =true;
    Node.ID=Row["Product_Class_id"].ToString();
    pNode.Nodes.Add(Node);
    }
    return;
     }
    foreach(DataRowView Row in dvTree) 
    { TreeNode Node=new TreeNode() ;
    if(pNode == null) 
    {    //&Igrave;í&frac14;&Oacute;&cedil;ù&frac12;&Uacute;&micro;&atilde;
    Node.Text = Row["Name"].ToString();
    TreeView1.Nodes.Add(Node);
    Node.Expanded=true;
    AddTree(Int32.Parse(Row["Product_Class_ID"].ToString()), Node);    //&Ocirc;&Ugrave;&acute;&Icirc;&micro;&Yacute;&sup1;é

    else 
    {  //&Igrave;í&frac14;&Oacute;&micro;±&Ccedil;°&frac12;&Uacute;&micro;&atilde;&micro;&Auml;×&Oacute;&frac12;&Uacute;&micro;&atilde; Node.Text = Row["Name"].ToString();
    pNode.Nodes.Add(Node);
    Node.Expanded = true;
    AddTree(Int32.Parse(Row["Product_Class_ID"].ToString()),Node);     //&Ocirc;&Ugrave;&acute;&Icirc;&micro;&Yacute;&sup1;é } }      
    }
      

  11.   

    我试了一下,不知道为什么还是不行,能不能把前台也一起贴出来,我先把我的前台贴出来!!
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <HTML>
    <HEAD>
    <title>WebForm1</title>
    <meta content="Microsoft Visual Studio .NET 7.0" name="GENERATOR">
    <meta content="Visual Basic 7.0" name="CODE_LANGUAGE">
    <meta content="JavaScript" name="vs_defaultClientScript">
    <meta content="http://schemas.microsoft.com/intellisense/ie5" name="vs_targetSchema">
    <script language="javascript"> function getV()
    {
    document.all("Hidden1").value="";
     var NodeArray1=new Array();
    NodeArray1=TreeView1.getChildren()[0].getChildren();
       
    for(var i=0;i<NodeArray1.length;i++)
    {
    var cNode=NodeArray1[i];
    var NodeArray2=new Array();
              NodeArray2=cNode.getChildren();
    for(var j=0;j<NodeArray2.length;j++)
    {
    var pNode=NodeArray2[j];
    if (pNode.getAttribute("checked")==true)
    {
    document.all("Hidden1").value=document.all("Hidden1").value+pNode.getAttribute("ID")+"#";
    }
    }
    }
    NodeArray1=TreeView1.getChildren()[1].getChildren();
       
    for(var i=0;i<NodeArray1.length;i++)
    {
    var cNode=NodeArray1[i];
    var NodeArray2=new Array();
              NodeArray2=cNode.getChildren();
    for(var j=0;j<NodeArray2.length;j++)
    {
    var pNode=NodeArray2[j];
    if (pNode.getAttribute("checked")==true)
    {
    document.all("Hidden1").value=document.all("Hidden1").value+pNode.getAttribute("ID")+"#";
    }
    }
    }
    alert(document.all("Hidden1").value);
    } </script> </HEAD>
    <body MS_POSITIONING="GridLayout">
    <form id="Form1" onsubmit="return CheckInput()" method="post" runat="server">
    <iewc:treeview id="TreeView1" style="Z-INDEX: 101; LEFT: 296px; POSITION: absolute; TOP: 176px"
    runat="server"></iewc:treeview>
    <asp:button id="Button1" style="Z-INDEX: 102; LEFT: 160px; POSITION: absolute; TOP: 296px" runat="server"
    Text="Button"></asp:button>
    <INPUT id="Hidden1" style="Z-INDEX: 103; LEFT: 320px; POSITION: absolute; TOP: 272px" type="hidden"
    name="Hidden1" runat="server"></FONT>
    </form> </body>
    </HTML>
      

  12.   

    <%@ Page language="c#" Codebehind="RecursiveTree.aspx.cs" AutoEventWireup="false" Inherits="exce.RecursiveTree" %>
    <%@ Register TagPrefix="iewc" Namespace="Microsoft.Web.UI.WebControls" Assembly="Microsoft.Web.UI.WebControls" %>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
    <HTML>
    <HEAD>
    <title>RecursiveTree</title>
    <meta content="Microsoft Visual Studio .NET 7.1" name="GENERATOR">
    <meta content="C#" name="CODE_LANGUAGE">
    <meta content="JavaScript" name="vs_defaultClientScript">
    <meta content="http://schemas.microsoft.com/intellisense/ie5" name="vs_targetSchema">
    <script language="javascript">
    function getV()
    {document.all("Hidden1").value="";
     var NodeArray1=new Array();
    NodeArray1=TreeView1.getChildren()[0].getChildren();
       
    for(var i=0;i<NodeArray1.length;i++)
    {
    var cNode=NodeArray1[i];
    var NodeArray2=new Array();
              NodeArray2=cNode.getChildren();
    for(var j=0;j<NodeArray2.length;j++)
    {
    var pNode=NodeArray2[j];
    if (pNode.getAttribute("checked")==true)
    {
    document.all("Hidden1").value=document.all("Hidden1").value+pNode.getAttribute("ID")+"#";
    }
    }
    }
    NodeArray1=TreeView1.getChildren()[1].getChildren();
       
    for(var i=0;i<NodeArray1.length;i++)
    {
    var cNode=NodeArray1[i];
    var NodeArray2=new Array();
              NodeArray2=cNode.getChildren();
    for(var j=0;j<NodeArray2.length;j++)
    {
    var pNode=NodeArray2[j];
    if (pNode.getAttribute("checked")==true)
    {
    document.all("Hidden1").value=document.all("Hidden1").value+pNode.getAttribute("ID")+"#";
    }
    }
    }
    alert(document.all("Hidden1").value);
    }

          
           
    </script>
    </HEAD>
    <body MS_POSITIONING="GridLayout">
    <form id="Form1" method="post" runat="server">
    <iewc:treeview id="TreeView1" style="Z-INDEX: 101; LEFT: 8px; POSITION: absolute; TOP: 8px" runat="server"></iewc:treeview><INPUT id="Hidden1" style="Z-INDEX: 102; LEFT: 296px; POSITION: absolute; TOP: 296px" type="hidden"
    name="Hidden1" runat="server">
    <asp:button id="Button1" style="Z-INDEX: 103; LEFT: 456px; POSITION: absolute; TOP: 464px" runat="server"
    Text="Display"></asp:button></form>

    </body>
    </HTML>
      

  13.   

    private void Page_Load(object sender, System.EventArgs e)
    {
    TreeView1.Attributes.Add("oncheck","getV();");
    if (!IsPostBack)
    {
    string SelectMember_Name="SELECT * from Product_Class";

    SqlConnection myConnection = new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["ConnectionString2"]);
    myConnection.Open();
    SqlCommand cmd1 = new SqlCommand(SelectMember_Name,myConnection);
    SqlDataAdapter adp = new SqlDataAdapter(SelectMember_Name,myConnection);
    DataSet ds=new DataSet();
    adp.Fill(ds);
    this.ViewState["ds"]=ds; 
    AddTree(0, (TreeNode)null);
    }
    }
    public void AddTree(int Parent,TreeNode pNode) 
    { DataSet ds=(DataSet) this.ViewState["ds"]; 
    DataView dvTree = new DataView(ds.Tables[0]);
    //过滤ParentID,得到当前的所有子节点
    dvTree.RowFilter =  "[Parent] = " + Parent;
    if (dvTree.Count ==0)
    {

    string SelectMember_Name="SELECT distinct(dbo.Product_Class.Product_Class_id), dbo.Product_List.Name AS Pname FROM dbo.Product_Class LEFT OUTER JOIN dbo.Product_List ON dbo.Product_Class.Product_Class_id = dbo.Product_List.Product_Class_ID";
    SqlConnection myConnection = new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["ConnectionString2"]);
    myConnection.Open();
    SqlCommand cmd1 = new SqlCommand(SelectMember_Name,myConnection);
    SqlDataAdapter adp = new SqlDataAdapter(SelectMember_Name,myConnection);
    DataSet ds1=new DataSet();
    adp.Fill(ds1);
    DataView dv = new DataView(ds1.Tables[0]);
        dv.RowFilter="[Product_Class_id]= "+Parent;
    foreach(DataRowView Row in dv) 
    {
      TreeNode Node=new TreeNode() ;
    Node.Text = Row["Pname"].ToString();
    Node.CheckBox =true;
    Node.Expanded =true;
    Node.ID=Row["Product_Class_id"].ToString();
    pNode.Nodes.Add(Node);
    }
    return;
     }
    foreach(DataRowView Row in dvTree) 
    { TreeNode Node=new TreeNode() ;
    if(pNode == null) 
    {    //添加根节点
    Node.Text = Row["Name"].ToString();
    TreeView1.Nodes.Add(Node);
    Node.Expanded=true;
    AddTree(Int32.Parse(Row["Product_Class_ID"].ToString()), Node);    //再次递归

    else 
    {  //添加当前节点的子节点 Node.Text = Row["Name"].ToString();
    pNode.Nodes.Add(Node);
    Node.Expanded = true;
    AddTree(Int32.Parse(Row["Product_Class_ID"].ToString()),Node);     //再次递归 } }      
    }
      

  14.   

    我已经全部照抄了,但弹出来的还全是空值!!
    前台:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
    <HTML>
    <HEAD>
    <title>RecursiveTree</title>
    <meta content="Microsoft Visual Studio .NET 7.1" name="GENERATOR">
    <meta content="C#" name="CODE_LANGUAGE">
    <meta content="JavaScript" name="vs_defaultClientScript">
    <meta content="http://schemas.microsoft.com/intellisense/ie5" name="vs_targetSchema">
    <script language="javascript">
    function getV()
    {document.all("Hidden1").value="";
     var NodeArray1=new Array();
    NodeArray1=TreeView1.getChildren()[0].getChildren();
       
    for(var i=0;i<NodeArray1.length;i++)
    {
    var cNode=NodeArray1[i];
    var NodeArray2=new Array();
              NodeArray2=cNode.getChildren();
    for(var j=0;j<NodeArray2.length;j++)
    {
    var pNode=NodeArray2[j];
    if (pNode.getAttribute("checked")==true)
    {
    document.all("Hidden1").value=document.all("Hidden1").value+pNode.getAttribute("ID")+"#";
    }
    }
    }
    NodeArray1=TreeView1.getChildren()[1].getChildren();
       
    for(var i=0;i<NodeArray1.length;i++)
    {
    var cNode=NodeArray1[i];
    var NodeArray2=new Array();
              NodeArray2=cNode.getChildren();
    for(var j=0;j<NodeArray2.length;j++)
    {
    var pNode=NodeArray2[j];
    if (pNode.getAttribute("checked")==true)
    {
    document.all("Hidden1").value=document.all("Hidden1").value+pNode.getAttribute("ID")+"#";
    }
    }
    }
    alert(document.all("Hidden1").value);
    }

          
           
    </script>
    </HEAD>
    <body MS_POSITIONING="GridLayout">
    <form id="Form1" method="post" runat="server">
    <iewc:treeview id="TreeView1" style="Z-INDEX: 101; LEFT: 8px; POSITION: absolute; TOP: 8px" runat="server"></iewc:treeview><INPUT id="Hidden1" style="Z-INDEX: 102; LEFT: 296px; POSITION: absolute; TOP: 296px" type="hidden"
    name="Hidden1" runat="server">
    <asp:button id="Button1" style="Z-INDEX: 103; LEFT: 456px; POSITION: absolute; TOP: 464px" runat="server"
    Text="Display"></asp:button></form>

    </body>
    </HTML>
      

  15.   

    后台:
    private void Page_Load(object sender, System.EventArgs e)
    {
    TreeView1.Attributes.Add("oncheck","getV();");
    if (!IsPostBack)
    {
    string SelectMember_Name="SELECT * from Product_Class";

    SqlConnection myConnection = new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["ConnectionString"]);
    myConnection.Open();
    SqlCommand cmd1 = new SqlCommand(SelectMember_Name,myConnection);
    SqlDataAdapter adp = new SqlDataAdapter(SelectMember_Name,myConnection);
    DataSet ds=new DataSet();
    adp.Fill(ds);
    this.ViewState["ds"]=ds; 
    AddTree(0, (TreeNode)null);
    }
    }
    public void AddTree(int Parent,TreeNode pNode) 
    { DataSet ds=(DataSet) this.ViewState["ds"]; 
    DataView dvTree = new DataView(ds.Tables[0]);
    //过滤ParentID,得到当前的所有子节点
    dvTree.RowFilter =  "[Parent] = " + Parent;
    if (dvTree.Count ==0)
    {

    string SelectMember_Name="SELECT distinct(dbo.Product_Class.Product_Class_id), dbo.Product_List.Name AS Pname FROM dbo.Product_Class LEFT OUTER JOIN dbo.Product_List ON dbo.Product_Class.Product_Class_id = dbo.Product_List.Product_Class_ID";
    SqlConnection myConnection = new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["ConnectionString"]);
    myConnection.Open();
    SqlCommand cmd1 = new SqlCommand(SelectMember_Name,myConnection);
    SqlDataAdapter adp = new SqlDataAdapter(SelectMember_Name,myConnection);
    DataSet ds1=new DataSet();
    adp.Fill(ds1);
    DataView dv = new DataView(ds1.Tables[0]);
    dv.RowFilter="[Product_Class_id]= "+Parent;
    foreach(DataRowView Row in dv) 
    {
    TreeNode Node=new TreeNode() ;
    Node.Text = Row["Pname"].ToString();
    Node.CheckBox =true;
    Node.Expanded =true;
    Node.ID=Row["Product_Class_id"].ToString();
    pNode.Nodes.Add(Node);
    }
    return;
    }
    foreach(DataRowView Row in dvTree) 
    { TreeNode Node=new TreeNode() ;
    if(pNode == null) 
    {    //添加根节点
    Node.Text = Row["Name"].ToString();
    TreeView1.Nodes.Add(Node);
    Node.Expanded=true;
    AddTree(Int32.Parse(Row["Product_Class_ID"].ToString()), Node);    //再次递归

    else 
    {  //添加当前节点的子节点 Node.Text = Row["Name"].ToString();
    pNode.Nodes.Add(Node);
    Node.Expanded = true;
    AddTree(Int32.Parse(Row["Product_Class_ID"].ToString()),Node);     //再次递归 } }      
    }