日期:2014-05-19  浏览次数:20420 次

重要问题(在线急等)关于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