就是像菜单一样,父节点绑定中国(国家表),子节点绑定山西(省份表),子孙节点绑定太原(市区表)!用代码实现。

解决方案 »

  1.   

    ....父节点绑定中国(国家表),子节点绑定山西(省份表),子孙节点绑定太原(市区表)
    还分三个表.....
    三个表结构是:
    id name parentid

    循环递归慢慢找吧
      

  2.   

     DataTable dtlModel = new DataTable();
            private void CreateData() {
                dtlModel.Columns.Add("id", typeof(Int32));
                dtlModel.Columns.Add("pid", typeof(Int32));
                dtlModel.Columns.Add("name");            for (int i = 1; i < 6; i++) {
                    DataRow dr = dtlModel.NewRow();
                    dr["id"] = i;
                    dr["pid"] = 0;
                    dr["name"] = i.ToString();
                    dtlModel.Rows.Add(dr);
                    for (int j = 1; j < 6; j++) {
                        DataRow dr1 = dtlModel.NewRow();
                        dr1["id"] = int.Parse(i.ToString() + j.ToString());
                        dr1["pid"] = i;
                        dr1["name"] = i + "_" + j;
                        dtlModel.Rows.Add(dr1);
                        for (int k = 1; k < 6; k++) {
                            DataRow dr2 = dtlModel.NewRow();
                            dr2["id"] = int.Parse(i.ToString() + j.ToString() + k.ToString());
                            dr2["pid"] = dr1["id"];
                            dr2["name"] = i + "_" + j + "_" + k;
                            dtlModel.Rows.Add(dr2);
                        }
                    }
                }
            }        private void BindTree(DataRow[] rows, TreeNode node) {
                foreach (DataRow r in rows) {
                    if (r["pid"] == DBNull.Value)
                        continue;                //如果是根结点,添加到TreeView控件
                    if (r["pid"].ToString() == "0") {
                        TreeNode node1 = new TreeNode();
                        node1.Text = string.Format("<input name='hd_{0}' type='hidden' value='{1}'/>{2}", r["id"], r["id"], r["name"].ToString());
                        node1.Value = r["id"].ToString();
                        
                        //node1.Target = "top";
                        TreeView1.Nodes.Add(node1);
                        BindTree(dtlModel.Select("pid=" + r["id"]), node1);
                    }
                    else if (node != null) {//否则添加到当前结点
                        TreeNode node1 = new TreeNode();
                        node1.Text = string.Format("<input name='hd_{0}' type='hidden' value='{1}'/>{2}", r["id"], r["id"], r["name"].ToString());
                        node1.Value = r["id"].ToString();
                        //node1.Target = "top";
                        node.ChildNodes.Add(node1);
                        BindTree(dtlModel.Select("pid=" + r["id"]), node1);//递归生成子树
                    }
                }
            }