repeater 嵌套

我现在想要实现一个三级嵌套的功能。数据库的表分别是bigclass,smallclass,littleclass-----------------------------... 我现在想要实现一个三级嵌套的功能。
数据库的表分别是bigclass,smallclass,littleclass
------------------------------------------------
表结构如下:
bigclass (bigclassid,bigclassname)
smallclass (smallclassid,smallclassname,bigclassid)
littleclass (littleclassid,littleclassname,smallclassid)
------------------------------------------------
大致效果如下:
----------------------------
服装类
|--新款服装
|----男式
|----女式
|--流行服装
|----男式
|----女式
电子产品类
|--MP3区
|----蓝魔系列
|----爱国者系列
|--笔计本电脑区
|----IBM系列
|----HP系列
|----联想系列

-------------------------------------
大致就是这种效果,我目前用的是Repeater的Relations.Add()来做的,可这种方法我只会将两个表做成关联,现在是三个表啊,该怎么来实现?
请各位大侠指点,不用Repeater也行,其它方法也行,只能效率高,功能能实现就行,最好能详细一点。
展开
 我来答
oO咖啡
2008-03-27 · 超过32用户采纳过TA的回答
知道答主
回答量:79
采纳率:0%
帮助的人:111万
展开全部
我个人觉得,像这种动态树型的结构的东西最好是用TreeView控件来做,这个控件在Microsoft.Web.UI.WebControls中
使用如下:
页面:
先注册
<%@ Register TagPrefix="iewc" Namespace="Microsoft.Web.UI.WebControls" Assembly="Microsoft.Web.UI.WebControls, Version=1.0.2.226, Culture=neutral, PublicKeyToken=31bf3856ad364e35" %>

接下来:
<iewc:treeview id="TreeView1" runat="server"></iewc:treeview>

代码部分:
声明:
protected Microsoft.Web.UI.WebControls.TreeView TreeView1;
绑定:放在page_load里
bindtree(TreeView1.Nodes);
以下三个实现,本来可以写成一个函数,为了便于你理解我分成三个,原理是一样的.
private void bindtree(TreeNodeCollection Nds)
{
string sql="select * from bigclass"
DataSet ds=getDataset(sql);//获取DataSet
DataView dv=ds.Tables[0].DefaultView;
TreeNode tn;
string bigclassid;
foreach(DataRowView dr in dv)
{
bigclassid=dr["bigclassid"].ToString();//当前ID
if (strID!="")
{
tn=new TreeNode();
tn.ID=dr["bigclassid"].ToString();
tn.Text=dr["bigclassname"].ToString();
tn.Expanded=true;//是否展开
Nds.Add(tn);
bindtree1(Nds[Nds.Count-1].Nodes,bigclassid);//绑定二级
}
}
}

private void bindtree1(TreeNodeCollection Nds , string bigclassid)
{
string sql="select * from smallclass where bigclassid="+bigclassid;
DataSet ds=getDataset(sql);//获取DataSet
DataView dv=ds.Tables[0].DefaultView;
TreeNode tn;
string smallclassid;
foreach(DataRowView dr in dv)
{
smallclassid=dr["smallclassid"].ToString();//当前ID
if (smallclassid!="")
{
tn=new TreeNode();
tn.ID=dr["smallclassid"].ToString();
tn.Text=dr["smallclassname"].ToString();
tn.NavigateUrl=dr["字段3"].ToString(); //如果有链接
//tn.Expanded=true;//是否展开
Nds.Add(tn);
bindtree2(Nds[Nds.Count-1].Nodes,smallclassid);//取三级
}
}
}

private void bindtree2(TreeNodeCollection Nds , string smallclassid)
{
string sql="select * from littleclass where smallclassid="+smallclassid;
DataSet ds=getDataset(sql);//获取DataSet
DataView dv=ds.Tables[0].DefaultView;
TreeNode tn;
string littleclassid;
foreach(DataRowView dr in dv)
{
littleclassid=dr["littleclassid"].ToString();//当前ID
if (smallclassid!="")
{
tn=new TreeNode();
tn.ID=dr["littleclassid"].ToString();
tn.Text=dr["littleclassname"].ToString();
tn.NavigateUrl=dr["字段3"].ToString(); //如果有链接
//tn.Expanded=true;//是否展开
Nds.Add(tn);
//bindtree3(Nds[Nds.Count-1].Nodes,littleclassid);//如果还有下一级
}
}
}
百度网友6f75ac8fa
2008-03-27 · TA获得超过2513个赞
知道大有可为答主
回答量:1.3万
采纳率:0%
帮助的人:4001万
展开全部
上面的可能会好一点啊
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wings_lee
2008-03-27 · 超过44用户采纳过TA的回答
知道小有建树答主
回答量:250
采纳率:0%
帮助的人:124万
展开全部
三级分类以上,推荐使用无限分类的设计

id pid 栏目名
自增 父栏目id,指向 id 顶级栏目id为0 绑定时可以使用递归来实现
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式