首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

重要有关问题(在线急等)关于TreeView递归生成树形菜单

2012-03-04 
重要问题(在线急等)关于TreeView递归生成树形菜单各位高手前辈们,近日我在做一个从ORACLE数据库取出数据数

重要问题(在线急等)关于TreeView递归生成树形菜单
各位高手前辈们,近日我在做一个从ORACLE数据库取出数据数据绑定到TreeView中的功能,我的数据库大致是这样的:
CDID             CDMC                         CDLX             CDCC
10                 存管中心                 0                   1
20                 客户账户类查询     0                   2
30                 资金资料查询         1                   3
40                 股东资料查询         1                   3
50                 银行账户查询         1                   3
55                 柜员资料查询         1                   3
60                 客户资产类查询     0                   2
.
.
.
.

我的代码是这样的:

private   void   Page_Load(object   sender,   System.EventArgs   e)
{
if   (!Page.IsPostBack)
{
this.TreeView1.Nodes.Clear();
OracleConnection       cnn=new       OracleConnection(System.Configuration.ConfigurationSettings.AppSettings[ "DSN "]);      
cnn.Open();        
TreeNode       node=new       TreeNode();      
ShowAllTree(this.TreeView1.Nodes,1,cnn,node);       //根节是以PID为0标志的              
cnn.Close();      
}
}
        //执行绑定功能
private       void       ShowAllTree(TreeNodeCollection   nodes,int   id,OracleConnection   cnn,TreeNode   node)      
{
string   OracleSelect   =   "SELECT   *   FROM   xt_cdk   where   cdcc   =   ' "   +   id+ " ' ";      
OracleDataAdapter   da   =   new   OracleDataAdapter(OracleSelect,cnn);      
DataTable   dt=new   DataTable();      
da.Fill(dt);

for(int       i=0;i <dt.Rows.Count;i++)                                                  
{      
TreeNode   newNode=new   TreeNode();
newNode.Text   =   dt.Rows[i][1].ToString();
nodes.Add(newNode);        
int   newID   =   int.Parse(dt.Rows[i][0].ToString());        
ShowAllTree(newNode.Nodes,newID,cnn,newNode);       //递归调用,将子结点ID当做下一当前结点ID      
       
}      
this.DataGrid1.DataSource   =   dt;
this.DataGrid1.DataBind();


dt.Dispose();      
da.Dispose();

}


但是出来的是第一层的结果,如下:
--存管中心
--集中监控
--实时监控
--稽查报告
--系统日志查询
--系统维护
--系统


不知为何,请高手朋友们赐教.十分感谢!!


[解决办法]
http://www.microsoft.com/china/msdn/library/webservices/asp.net/CustEntCls.mspx?mfr=true
帮LZ顶
[解决办法]
Page_Load中这个正确:
ShowAllTree(this.TreeView1.Nodes,1,cnn,node);

ShowAllTree中堤归不正确:
ShowAllTree(newNode.Nodes,newID,cnn,newNode);
用newNode.ChildNodes
[解决办法]
添加子节点和添加根节点的方法不同

TreeView1.Nodes.Add根
tn.ChildNodes.Add子(tn是父节点)
[解决办法]
题外话,千万不要在递归中查询数据库.

热点排行