using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Data.SqlClient; using System.Data; public partial class _Default : System.Web.UI.Page { String[] arr; protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { BindDataBase(); TreeView1.ShowLines = true; //whether or not display the line beetween p&s TreeView1.ExpandDepth = 1; //the number of layers for showing at first } } public void BindDataBase() { SqlConnection con = new SqlConnection(); //create the first connection with table cat1 con.ConnectionString = "server=.//KIDD;User ID=sa;Password=19860914;database=db_02"; SqlDataAdapter adpt = new SqlDataAdapter("select * from cat1", con); DataSet ds = new DataSet(); adpt.Fill(ds, "cat1"); SqlConnection con1 = new SqlConnection(); // create the second connection with table cat2 con1.ConnectionString = "server=.//KIDD;User ID=sa;Password=19860914;database=db_02"; SqlDataAdapter adpt1 = new SqlDataAdapter("select * from cat2", con1); DataSet ds1 = new DataSet(); adpt1.Fill(ds1, "cat2"); TreeNode tree1 = new TreeNode("country&city"); this.TreeView1.Nodes.Add(tree1); for (int i = 0; i < ds.Tables["cat1"].Rows.Count; i++) //out_loop, fill second level node(country) { String cat1 = ds.Tables["cat1"].Rows[i][0].ToString(); TreeNode tree2 = new TreeNode(ds.Tables["cat1"].Rows[i][1].ToString()); tree1.ChildNodes.Add(tree2); for (int j = 0; j < ds1.Tables["cat2"].Rows.Count; j++) //in_loop, fill third level node(city) { String cat2 = ds1.Tables["cat2"].Rows[j][2].ToString(); if (cat1 == cat2) //use cat2 to fill matched cat1 { TreeNode tree3 = new TreeNode(ds1.Tables["cat2"].Rows[j][1].ToString()); tree2.ChildNodes.Add(tree3); } } } } public void TreeView1_SelectedNodeChanged(object sender, EventArgs e) { if (Panel1.Visible != false) { String son1 = Convert.ToString(TreeView1.SelectedNode.Depth); // get a node's value String parent1 = Convert.ToString(TreeView1.SelectedNode.Parent.Value); // get selected node's parent's value city.Text = son1; country.Text = parent1; } else { String levela = Convert.ToString(TreeView1.SelectedNode.Value); level.Value = levela; /* String parent111 = Convert.ToString(TreeView1.SelectedNode.Value); // get selected node's parent's value Int64 level1 = Convert.ToInt64(level.Value); //get the value of label(level), and convert it as Int64 Int64 level2 = Convert.ToInt64(TreeView1.SelectedNode.Depth); parent11.Visible = true; error.Text = ""; if (level1 > level2) //compare two node's depth { parent11.Text = parent111; } else { parent11.Visible = false; error.Text = "Error!!! Can not choose this one as the parent!!!"; } */ } } protected void SqlDataSource1_Selecting(object sender, SqlDataSourceSelectingEventArgs e) { } public void _array(ref String[] array, ref int count) { if (Panel1.Visible != true) { String levelb = Convert.ToString(level.Value); for (int i = 0; i < count; i++) { if (levelb == array[i]) { parent11.Visible = false; error.Text = "Error!!! Can not choose this one as the parent!!!"; } } } } public void edit_Click(object sender, EventArgs e) { int count = TreeView1.SelectedNode.ChildNodes.Count; String[] arr = new String[count]; Panel2.Visible = true; for (int a = 0; a < count;a++ ) { String child = TreeView1.SelectedNode.ChildNodes[a].Value; arr[a] = Convert.ToString(child); } _array(ref arr, ref count); //parent11.Text = Convert.ToString(arr[0]); //Console.Write(arr[0]); //Console.Write(arr[1]); //Console.Write(arr[2]); String son1 = Convert.ToString(TreeView1.SelectedNode.Value); // get a node's value String parent1 = Convert.ToString(TreeView1.SelectedNode.Parent.Value); // get selected node's parent's value son.Text = son1; parent11.Text = parent1; city.Visible = false; country.Visible = false; Panel1.Visible = false; /* Panel2.Visible = true; String son1 = Convert.ToString(TreeView1.SelectedNode.Value); // get a node's value String parent1 = Convert.ToString(TreeView1.SelectedNode.Parent.Value); // get selected node's parent's value son.Text = son1; parent11.Text = parent1; city.Visible = false; country.Visible = false; Panel1.Visible = false; String levela = Convert.ToString(TreeView1.SelectedNode.Depth); //get the selected node's depth and convert it as String type level.Value = levela; // use the lable "level" to transfer value */ } }