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 { 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.Value); // 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 { parent11.Visible = true; error.Text = ""; String parent123 = Convert.ToString(TreeView1.SelectedNode.Value); // get selected node's parent's value string strString = TreeView1.SelectedNode.ValuePath; string[] strArray; strArray = strString.Split('/'); int count = strArray.Length; parent11.Text = parent123; String parents = Convert.ToString(level.Value); for (int i = 0; i < count; i++) { if (parents == strArray[i]) { parent11.Visible = false; error.Text = "Error!!! Can not choose this one as the parent!!!"; } } } } public void edit_Click(object sender, EventArgs e) { 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 levela = Convert.ToString(TreeView1.SelectedNode.Value); level.Value = levela; } }