本帖最后由 xzwms2010 于 2010-07-22 13:48:54 编辑

解决方案 »

  1.   

    http://topic.csdn.net/u/20071016/10/c9e3c486-87f9-40a0-8d33-627448be6b28.html
    类似、解决了的帖子
      

  2.   

    那个是下拉列表形式的 我要Tree形式的!
      

  3.   


    没能过啊!我百度的都是下拉列表的 !我想要Tree三级的!
      

  4.   

    我们公司有个Tree控件,多级都可以的
      

  5.   

    treeview递归绑定数据
    先绑定Province根据PIF查询city
    private void InitTree(TreeNodeCollection Nds,string parentId)
    {
    DataView dv=new DataView();
    TreeNode tmpNd;
    string intId;
    dv.Table=ds.Tables["tree"];
    dv.RowFilter="ParentId='" + parentId + "'" ;
    foreach(DataRowView drv in dv)
    {
    tmpNd=new TreeNode();
    tmpNd.Tag=drv["NodeId"].ToString();
    tmpNd.Text=drv["NodeName"].ToString();
    Nds.Add(tmpNd);
    intId=drv["ParentId"].ToString();
    InitTree(tmpNd.Nodes,tmpNd.Tag.ToString());
    }
    }  
      

  6.   

    你用微软提供的TreeView不行吗?
      

  7.   

    我只会一个比较笨的方法。。
     private void Bind()
        {
              //这里先获取所有省的信息
            DataSet ds = bll.getUnitid();
            //调用创建方法创建TreeView的根节点
            CreateTreeView(TreeView1.Nodes, ds);    }
        private void CreateTreeView(TreeNodeCollection nodes, DataSet ds)
        {
            //从Dataset中筛选符合条件的行的集合
            DataRow[] drr = ds.Tables[0].Select();        //遍历获得行的集合
            foreach (DataRow dr in drr)
            {
                //创建TreeView节点
                TreeNode tnode = new TreeNode();
                //添加到根节点中
                nodes.Add(tnode);
                //设置显示的文本
                //tnode.ImageUrl = "images/foldericon1.gif";
                tnode.Text = dr["unit"].ToString();
                tnode.Value = dr["id"].ToString();
                //设置显示的路径
                // tnode.NavigateUrl = dr["PurURL"].ToString();      //本来是递归调用方法,不过由于你的数据不是由一个字段来区分级数,所以得重新查询市的所有信息
                // CreateTreeView(tnode.ChildNodes, ds);
                DataSet ds1 = bll.getdepartment();
                CreateTreeViewCnode(tnode.ChildNodes, ds1, dr["id"].ToString());
                //从Dataset中删除已经添加的行,提高访问效率
                ds.Tables[0].Rows.Remove(dr);        }    }
        private void CreateTreeViewCnode(TreeNodeCollection nodes, DataSet ds, string unitid)
        {
            //定义筛选条件
            string sql = string.Format("unit_id={0}", unitid);
            //从Dataset中筛选符合条件的行的集合
            DataRow[] drr = ds.Tables[0].Select(sql);        //遍历获得行的集合
            foreach (DataRow dr in drr)
            {
                //创建TreeView节点
                TreeNode tnode = new TreeNode();
                //添加到根节点中
                nodes.Add(tnode);
                //设置显示的文本
                //tnode.ImageUrl = "images/foldericon1.gif";
                tnode.Text = dr["depart"].ToString();
                tnode.Value = dr["id"].ToString();
                //设置显示的路径
                // tnode.NavigateUrl = dr["PurURL"].ToString();
                //递归调用方法
                DataSet ds1 = bll.getFirstdate();
                CreateTreeViewCnodePolicedate(tnode.ChildNodes, ds1, dr["id"].ToString());
                //从Dataset中删除已经添加的行,提高访问效率
                ds.Tables[0].Rows.Remove(dr);
            }    }
        private void CreateTreeViewCnodePolicedate(TreeNodeCollection nodes, DataSet ds, string departid)
        {
            //定义筛选条件
            string sql = string.Format("depart_id='{0}'", departid);
            //从Dataset中筛选符合条件的行的集合
            DataRow[] drr = ds.Tables[0].Select(sql);        //遍历获得行的集合
            foreach (DataRow dr in drr)
            {
                //创建TreeView节点
                TreeNode tnode = new TreeNode();
                //添加到根节点中
                nodes.Add(tnode);
                //设置显示的文本
                //tnode.ImageUrl = "images/foldericon1.gif";
                string firstTime = Convert.ToDateTime(dr["firstdate"]).Year.ToString();
                tnode.Text = firstTime + "着装";
                tnode.Value = dr["firstdate"].ToString();
                //设置显示的路径
                // tnode.NavigateUrl = dr["PurURL"].ToString();
                DataSet ds1 = bll.getPoliceinfo();
                CreateTreeViewCnodePolice(tnode.ChildNodes, ds1, dr["firstdate"].ToString());
                //从Dataset中删除已经添加的行,提高访问效率
                ds.Tables[0].Rows.Remove(dr);
            }    }
        private void CreateTreeViewCnodePolice(TreeNodeCollection nodes, DataSet ds, string firstdate)
        {
            //定义筛选条件
            string sql = string.Format("firstdate='{0}'", firstdate);
            //从Dataset中筛选符合条件的行的集合
            DataRow[] drr = ds.Tables[0].Select(sql);        //遍历获得行的集合
            foreach (DataRow dr in drr)
            {
                //创建TreeView节点
                TreeNode tnode = new TreeNode();
                //添加到根节点中
                nodes.Add(tnode);
                //设置显示的文本
                //tnode.ImageUrl = "images/foldericon1.gif";
                tnode.Text = dr["name"].ToString();
                tnode.Value = dr["police_id"].ToString();
                //设置显示的路径
                // tnode.NavigateUrl = dr["PurURL"].ToString();
                //递归调用方法            //从Dataset中删除已经添加的行,提高访问效率
                ds.Tables[0].Rows.Remove(dr);
            }    }
      

  8.   

    我上面发的弄复杂了,用这个可以:
    首先先查出所有的省,保存在dataset中。
    然后:
    /// <summary>
        /// 创建DataSet的方法
        /// </summary>
        /// <param name="nodes">TreeView的根节点</param>
        /// <param name="ds">Dataset数据集合</param>
        /// <param name="pid">节点的父</param>
        private void CreateTreeView(TreeNodeCollection nodes, DataSet ds, int pid)
        {
            //定义筛选条件
            string sql = string.Format("ParentID={0}", pid);        //从Dataset中筛选符合条件的行的集合
            DataRow[] drr = ds.Tables[0].Select(sql);        //遍历获得行的集合
            foreach (DataRow dr in drr)
            {
                //创建TreeView节点
                TreeNode tnode = new TreeNode();
                //添加到根节点中
                nodes.Add(tnode);
                //设置显示的文本
                //tnode.ImageUrl = "images/foldericon1.gif";
                tnode.Text = dr["PurName"].ToString();
                tnode.Value = dr["PurID"].ToString();
                //设置显示的路径
                tnode.NavigateUrl = dr["PurURL"].ToString();
                //递归调用方法
                CreateTreeView(tnode.ChildNodes, ds, Convert.ToInt32(dr["PurID"]));
                //从Dataset中删除已经添加的行,提高访问效率
                ds.Tables[0].Rows.Remove(dr);        }
        }
      

  9.   

    http://topic.csdn.net/u/20090619/16/98091f21-2a6f-4079-a1a2-e223c49b0495.html?16212
      

  10.   

    就用一个表就可以搞定的吧。 id,pid,name(最简单的无限级,pid为父id号)
      

  11.   


     private void TreeViewBind()
        {
            string sql_tr = "select id,pid,name from Tab";
            SqlConnection mySqlConn = new SqlConnection(sqlConn);
            SqlDataAdapter myDataAdapter = new SqlDataAdapter(sql_tr, mySqlConn);
            mySqlConn.Open();
            myDataAdapter.Fill(ds_tr, "tree_show");
            DataView dv = ds_tr.Tables[0].DefaultView;
            dv.RowFilter = "pid=0";
            TreeView1.ShowCheckBoxes = TreeNodeTypes.None; //不显示checkbox
            foreach (DataRowView drv in dv)
            {
                TreeNode node = new TreeNode();
                node.Text = drv["name"].ToString();
                node.Value = drv["id"].ToString();
                node.Expanded = false;
                TreeView1.Nodes.Add(node);
                addnode(dv, node);
            }
        }    /// 递归绑定子节点    private void addnode(DataView dv, TreeNode node)
        {
            dv.RowFilter = "pid='" + node.Value + "'";
            foreach (DataRowView row in dv)
            {
                TreeNode replyNode = new TreeNode();
                replyNode.Text = row["name"].ToString();
                replyNode.Value = row["id"].ToString();
                replyNode.Expanded = false;
                node.ChildNodes.Add(replyNode);
                addnode(dv, replyNode);
            }
        }以上是绑定TreeView代码
      

  12.   

    加载页面的时候动态绑定省,点击省的时候用ajax动态加载市,再依次类推。
    前段时间我做了一个类似的