none
从网上找的treeview递归绑定数据库的方法,可是就是不行,头都大了,代码如下,请教高人. RRS feed

  • 问题

  • oracle数据库结构:
    id(varchar32-sys_guid())            bumen(nvarchar2(50))     up_id(varchar(32))
    AB95A235C8EA44DEBB89D972D01277EB   a部门
    2493C2B2F1D34371BCDECDFF6D0E247D   b部门
    4BBDBA04DDBC4A58A57302374A045CBB   c部门
    B7878E73BC25450A9774910B9581243C   c部门1班               4BBDBA04DDBC4A58A57302374A045CBB
    515C868191694EAC86E180144C685A17   c部门1班               4BBDBA04DDBC4A58A57302374A045CBB
    A1A5BD97ABF8438B8A7BCE8DEDAA4BBF   c部门1班             4BBDBA04DDBC4A58A57302374A045CBB
    D953F0C14DAC46C1A7F38B7A3CE24214   b部门1班             2493C2B2F1D34371BCDECDFF6D0E247D
    285470122951413F96B85B0664FB63C6   b部门1班                2493C2B2F1D34371BCDECDFF6D0E247D
    DBF1760DF94E4B1391019B04FC71D72E   e部门

      cs.db_Ora db = new cs.db_Ora();
    
            DataSet ds = new DataSet();
    
            protected void Page_Load(object sender, EventArgs e)
    
            {
    
                if (!IsPostBack)
    
                {
    
                    ds = db.execute_DataSet("mis_manager", "select * from bumen");//dataset绑定
    
                    bind_Tv(null,(TreeNode)null);
    
                }
    
            }
    
            protected void bind_Tv(string parent_Id, TreeNode p_Node)
    
            {
    
                DataView dvTree = new DataView(ds.Tables[0]);
    
                dvTree.RowFilter = "up_id=" + parent_Id;
    
                foreach (DataRowView row in dvTree)
    
                {
    
                TreeNode tn1 = new TreeNode();
    
                    if (p_Node == null)
    
                    {
    
                        tn1.Text = row["bumen"].ToString();
    
                        //tn1.Value = row["id"].ToString();
    
                        TreeView1.Nodes.Add(tn1);
    
                        //tn1.Expanded = true;
    
                        bind_Tv(row["id"].ToString(), tn1);
    
                    }
    
                    else
    
                    {
    
                        tn1.Text = row["bumen"].ToString();
    
                        //tn1.Value = row["id"].ToString();
    
                        p_Node.ChildNodes.Add(tn1);
    
                        //tn2.Expanded = true;
    
                        bind_Tv(row["id"].ToString(), tn1);
    
                    }
    
                }
    
            }
    
    
    2010年1月16日 13:01

答案

全部回复

  • dvTree.RowFilter = "up_id='" + parent_Id + "'";试试

    【孟子E章】
    • 已标记为答案 杜宏宇 2010年1月17日 3:54
    2010年1月16日 23:58
    版主
  • 老师,倒是不报错了,但是一次也没foreach,在dvTree.RowFilter = "up_id='" + parent_Id + "'";之前查看DataView dvTree = new DataView(ds.Tables[0]);
    中的dvTree中还很多数据呢,但是运行完dvTree.RowFilter = "up_id='" + parent_Id + "'";后dvTree里没东西了。这是为什么呢?
    2010年1月17日 0:30
  • 找到原因了,原来根节点不能为null 因为在oracle中select * from 表 where 字段=null是查不出来的。必须用select * from 表 where 字段 is null才行。所以把根节点的up_id字段设置为0就行了。
    2010年1月17日 3:54