RT 做个视图,生成表结构:本身编码,父编码,名称。将数据集放在DataSet 中后,通过DataRow[] dr=Ds.table[0].Rows.seletFiler("父级="父编码);递归过滤;即可得到结构。()
具体要怎么做啊,,,大家可以贴出代码么
谢谢拉要做项目用,急阿

解决方案 »

  1.   

    2.0的话直接在使用菜单控件,在循环DataRow集合的时候田间MenuItem对象附加到menu对象上就可。
    1。1的话,写入一个前台的div对象里面了,然后脚本控制其显示,隐藏,以及位置等。
      

  2.   

    private void BiudTree()
    {
    ZJBF_Exam.BLL.SysManage sm=new ZJBF_Exam.BLL.SysManage();
    DataTable dt=sm.GetTreeList("").Tables[0];
    this.listTarget.Items.Clear();
    //加载树
    this.listTarget.Items.Add(new ListItem("根目录","0"));
    DataRow [] drs = dt.Select("ParentID= " + 0);
    foreach( DataRow r in drs )
    {
    string nodeid=r["NodeID"].ToString();
    string text=r["Text"].ToString();
    //string parentid=r["ParentID"].ToString();
    //string permissionid=r["PermissionID"].ToString();
    text="╋"+text;
    this.listTarget.Items.Add(new ListItem(text,nodeid));
    int sonparentid=int.Parse(nodeid);
    string blank="├";

    BindNode( sonparentid, dt,blank); }
    this.listTarget.DataBind(); }
    private void BindNode(int parentid,DataTable dt,string blank)
    {
    DataRow [] drs = dt.Select("ParentID= " + parentid );

    foreach( DataRow r in drs )
    {
    string nodeid=r["NodeID"].ToString();
    string text=r["Text"].ToString();
    //string permissionid=r["PermissionID"].ToString();
    text=blank+"『"+text+"』";

    this.listTarget.Items.Add(new ListItem(text,nodeid));
    int sonparentid=int.Parse(nodeid);
    string blank2=blank+"─";
    BindNode( sonparentid, dt,blank2);
    }
    }
      

  3.   

    ASP。NET 2.0 新技术讨论群:20810637(群主)
      

  4.   

    加一个DataRelation约束一下就可以了
      

  5.   

    private void Page_Load(object sender, EventArgs e)
    {
      if (!this.IsPostBack)
      {
        this.buildTree();
      }
    }private void buildTree()
    {
      DataSet ds = new DataSet();
      System.Data.OleDb.OleDbConnection dbCon = new System.Data.OleDb.OleDbConnection ("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + this.Server.MapPath("data/siteMap.mdb"));
      try
      {
        dbCon.Open();
      }
      catch (Exception exc)
      {
        this.Response.Write(exc.Message);
      }
      System.Data.OleDb.OleDbDataAdapter adapter = new System.Data.OleDb.OleDbDataAdapter("SELECT * FROM SiteMap", dbCon);
      adapter.Fill(ds);
      ds.Relations.Add("NodeRelation", ds.Tables[0].Columns["NodeId"], ds.Tables[0].Columns["ParentNodeId"]);
      foreach (DataRow dbRow in ds.Tables[0].Rows)
      {
        if (dbRow.IsNull("ParentNodeId")) 
        {
          TreeViewNode newNode ; 
          newNode = CreateNode(dbRow["Text"].ToString(), dbRow["ImageUrl"].ToString(), true);
          TreeView1.Nodes.Add(newNode);
          PopulateSubTree(dbRow, newNode);
        }
      }
    }private void PopulateSubTree(DataRow dbRow, TreeViewNode node)
    {
      TreeViewNode childNode;
      foreach (DataRow childRow in dbRow.GetChildRows("NodeRelation"))
      {
        childNode = new ComponentArt.Web.UI.TreeViewNode();
        childNode = this.CreateNode(childRow["Text"].ToString(), childRow["ImageUrl"].ToString(), true);
        node.Nodes.Add(childNode);
        this.PopulateSubTree(childRow, childNode);
      }
    }private TreeViewNode CreateNode(string text, string imageurl, bool expanded)
    {
      TreeViewNode node = new TreeViewNode();
      node.Text = text;
      node.ImageUrl = imageurl;
      node.Expanded = expanded;
      return node;

      

  6.   

    //生成数据文件
    DataSet objDataSet = GetDataSet();
    if(!IsPostBack)
    {
       initDirectoryNodes(TreeView1.Nodes,0);
    }
    //生成所有的目录结点
    private void initDirectoryNodes(TreeNodeCollection node,int parentId)
    {
    TreeNode newNode;
    string option = "parentId='" + parentId + "'";
                DataRow [] objRow = objDataSet.Tables["directoryInfo"].Select(option);
    foreach(DataRow row in objRow)
    {
    newNode = new TreeNode();
    newNode.ID= row["directoryId"].ToString().Trim();
    newNode.Text = row["directoryName"].ToString().Trim();
    newNode.ImageUrl = "images/folder.gif";
    newNode.ExpandedImageUrl = "images/folderopen.gif";
    node.Add(newNode);
                    initFileNodes(newNode.Nodes,Convert.ToInt32(newNode.ID));
    initDirectoryNodes(newNode.Nodes,Convert.ToInt32(newNode.ID));
                }
    }
    从前写的一个递归目录,希望对你有用
      

  7.   

    http://www.codeproject.com/cs/miscctrl/treeviewtutorial.asp
    http://www.codeproject.com/cs/miscctrl/DataBoundTreeView.asp
      

  8.   

    http://www.codeproject.com/info/search.asp?cats=3&searchkw=treeview&Submit1=Search&author=&sd=15+Nov+1999&ed=27+Aug+2006直接告诉你代码,还不如告诉你找到代码的方法,以后有类似问题就多去这里找找
      

  9.   

    this.menuBind(this.menu.Items, "000000", ds);
    private void menuBind(MenuItemCollection micCurrent, string parentCode, DataSet ds)
        {
            DataView dvw = new DataView();
            MenuItem miTemp;        //string tempCode;
            dvw.Table = ds.Tables[0];
            dvw.RowFilter = "parentCode='" + parentCode + "'";
            foreach (DataRowView drv in dvw)
            {
                miTemp = new MenuItem();
                miTemp.Value = drv["code"].ToString();
                miTemp.Text = drv["name"].ToString();
                miTemp.NavigateUrl = drv["linkUrl"].ToString();
                micCurrent.Add(miTemp);
                //递归调用   
                menuBind(miTemp.ChildItems, miTemp.Value, ds);
            }
        }