function getV()
{
var pNode=TreeView1.getTreeNode(TreeView1.clickedNodeIndex)
document.all("Hidden1").value=document.all("Hidden1").value+pNode.getAttribute("ID")+","; }
老大,按照你现在的做法取已经取到,但是每当在产品前面打了勾以后如果再去掉,那么hidden里面还是会放进这个值!并且会放两次,有办法去掉这种情况吗?就是打了勾以后如果再去掉,那么就不要存放这个值??
{
var pNode=TreeView1.getTreeNode(TreeView1.clickedNodeIndex)
document.all("Hidden1").value=document.all("Hidden1").value+pNode.getAttribute("ID")+","; }
老大,按照你现在的做法取已经取到,但是每当在产品前面打了勾以后如果再去掉,那么hidden里面还是会放进这个值!并且会放两次,有办法去掉这种情况吗?就是打了勾以后如果再去掉,那么就不要存放这个值??
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")+","; }
{
var pNode=TreeView1.getTreeNode(TreeView1.clickedNodeIndex)
if (pNode.getAttribute("checked")==true)
{
document.all("Hidden1").value=document.all("Hidden1").value+pNode.getAttribute("ID")+",";
}
}
//只针对根结点,大家把它可改为递归形式
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")+",";
}
}
我用这样的方法当取消了勾以后,这个产品id还是会保存到hidden里面??
//只针对根结点,大家把它可改为递归形式
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??
只能用非递归,我试了递归的方法有问题,因为地节点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);
}
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); //Ôٴεݹé } }
}
<!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>
<%@ 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>
{
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); //再次递归 } }
}
前台:
<!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>
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); //再次递归 } }
}