工作中遇到了困难希望高手能帮我解决;    
是关于asp.net中动态生成treeview 的;
我有三个表:
第一大类表:
CREATE TABLE [fsort] (
 [fid] [int] IDENTITY (1, 1) NOT NULL ,
 [fname] [varchar] (200) COLLATE Chinese_PRC_CI_AS NOT NULL ,
  PRIMARY KEY  CLUSTERED 
 (
  [fid]
 )  ON [PRIMARY] 
) ON [PRIMARY] 
GO
,第二大类表
CREATE TABLE [tsort] (
 [tid] [int] IDENTITY (1, 1) NOT NULL ,
 [tname] [varchar] (30) COLLATE Chinese_PRC_CI_AS NULL ,
 [fid] [int] NULL ,
  PRIMARY KEY  CLUSTERED 
 (
  [tid]
 )  ON [PRIMARY] 
) ON [PRIMARY]
GO,
产品表:
CREATE TABLE [product] (
 [pid] [int] IDENTITY (1, 1) NOT NULL ,
 [pname] [varchar] (200) COLLATE Chinese_PRC_CI_AS NOT NULL ,
 [bianhao] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
 [pdfUrl] [varchar] (255) COLLATE Chinese_PRC_CI_AS NULL , 
  PRIMARY KEY  CLUSTERED 
 (
  [pid]
 )  ON [PRIMARY] 
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO
第一大类表第二大类表:的父表;
第二大类表是产品表的父表;
 
顾客要求是: 
将所有的产品都列在网页上,
当鼠标点在第1大类是,自动会下滑出第2大类,当鼠标点在第2大类上,自动会下滑出第3大类,
在第3大类中每个产品的右侧,都有1个下载标识,可供别人下载PDF技术文档。
 
关键是动态生成treeview.,

哪位高手会肯帮个忙,在下在这里先说声谢谢了!;,
首先生成根结点


DataTable dt=ado.Myretable("select fid,sname from fsort","fsort");

for(int i=0;i<dt.Rows.Count;i++)
{
TreeNode snode=new TreeNode();
snode.Text=dt.Rows[i]["sname"].ToString();
snode.ImageUrl="mycontrol/image/MyPictures.gif";                 
snode.ID=dt.Rows[i]["fid"].ToString();
                    this.TreeView1.Nodes.Add(snode);

}

生成二级节点
private void AddSecondNode(TreeNode rootnode,string parentid)
{

string s="select fid,sname from  tsort where sid='"+parentid+"'";

ADO ado=new ADO ();

DataTable dt=ado.ReturnDataSetByText(s,"xx").Tables[0];

TreeNode tn;

for(int i=0;i<TreeView1.Nodes.Count;i++)

for(int j=0;j<dt.Rows.Count;j++)
{

DataRow dr=dt.Rows[j];

tn=new TreeNode();

tn.ID=dr["fid"].ToString();
tn.ImageUrl="mycontrol/image/MyPictures.gif";
tn.Text=dr["sname"].ToString();

                    TreeView1.Nodes[i].Nodes.Add(tn);


}

AddSecondNode(TreeView1.Nodes[i],TreeView1.Nodes[i].ID);    
}
   
}

出现了错误,请问有没有更好的方法,解决这个问题?谢谢了