在asp.net 中怎么做出来的:如下图,是百度知道的问题分类。

 我来答
冠子丹0kd
2010-10-09 · 超过24用户采纳过TA的回答
知道答主
回答量:77
采纳率:0%
帮助的人:54.4万
展开全部
这是个DataList,Repeater嵌套绑定做的,最近我刚做了个Repeater嵌套,你参考下:
.aspx
<asp:Repeater ID="Rpt_main" runat="server" onitemdatabound="Rpt_main_ItemDataBound">

<ItemTemplate>
<div style="width:80%; height:15px; margin-top:10px;" class="margin_left">
<div class="left" style="margin-top:5px; margin-right:5px"><img src="/member/images/ico_21.gif" /></div>
<div class="left" style="font-weight:bold;"> <%# Eval("title")%></div>
</div>
<asp:Repeater ID="Rpt_detal" runat="server">

<HeaderTemplate>
<div class="clear" ></div><!--防止层叠-->
<div class="jy">
</HeaderTemplate>
<ItemTemplate>
<a href="browser.aspx?subid=<%#Eval("belongsubject")%>&Detailid=<%#Eval("subjectid")%>" target="_blank"><%# Eval("title")%></a>
</ItemTemplate>
<FooterTemplate>
<div class="clear"></div><!--防止层叠-->

</div>
</FooterTemplate>

</asp:Repeater>

</ItemTemplate>

<SeparatorTemplate>
<div class="xuXian" style=" width:95%;margin:0 auto; margin-top:5px; margin-bottom:-10px"></div><!---虚线灰色-->
</SeparatorTemplate>
</asp:Repeater>

.cs

protected void Drp_Bind()
{

//状态为0代表为普通主科室
ListModel = SubBLL.GetModelList(" subjectstate=0");
if (subModel != null)
{
this.Rpt_main.DataSource = ListModel;
this.Rpt_main.DataBind(); //绑定数据。
}

}

protected void Rpt_main_ItemDataBound(object sender, RepeaterItemEventArgs e)
{

if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
Repeater rptdetal = (Repeater)e.Item.FindControl("Rpt_detal");
//找到科室Repeater关联的数据项
subModel = (Maticsoft.Model.order_subject)e.Item.DataItem;

//提取主科室ID
int MainId = subModel.subjectid;
//根据主科室ID查询该科室下的细科,并绑定产品Repeater
rptdetal.DataSource = SubBLL.GetModelList("belongsubject=" + MainId + "");
rptdetal.DataBind();
}

}
后台就分两部分绑定,具体绑定就不全写出来了,不知道你看得懂不,其实就嵌套循环,各自己绑定。
wpf1523
2010-10-09 · TA获得超过102个赞
知道答主
回答量:157
采纳率:0%
帮助的人:137万
展开全部
其实就是两个数据控件的嵌套,重要的不是前台,而是后台如何为子控件绑定数据。
你看下我的代码,我是用两个datalist嵌套的
<asp:DataList ID="dt1" runat="server" Width="100%" OnItemDataBound="dt1_ItemDataBound" >
<ItemTemplate>
<span style="margin-left:5px; margin-right:10px;">•<%#Eval("title") %></span>
<asp:DataList ID="dt2" runat="server" Width="100%">
<ItemTemplate>
<span style="padding-left:20px;"><a href="cp_list1.aspx?id=<%#Eval("id") %>"><%#Eval("title") %></a></span><br />
</ItemTemplate>
</asp:DataList>
</ItemTemplate>
</asp:DataList>
看到OnItemDataBound="dt1_ItemDataBound"这个了吗?这个才是实现嵌套的关键。然后在后台加入以下的代码
protected void dt1_ItemDataBound(object sender, System.Web.UI.WebControls.DataListItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{

DataList dt = (DataList)e.Item.FindControl("dt2");
DataRowView rowv = (DataRowView)e.Item.DataItem;
int sum=Convert.ToInt32(rowv["id"]);
if(sum>0)
{
string sql1 = "select * from type where lid=" +sum;
DataSet ds1 = DBhelper.getdata(sql1);
dt.DataSource = ds1;
dt.DataBind();
}

}

}
实现的原理就是在dt1绑定数据的时候,寻找到子控件dt2,用的方法就是findcontrol
如果还看不懂,就加我吧!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
vachelcai
2010-10-09 · 超过98用户采纳过TA的回答
知道小有建树答主
回答量:285
采纳率:66%
帮助的人:139万
展开全部
你得嵌套控件。。就是列表里面还有列表
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
stxh3218
2010-10-09 · 超过25用户采纳过TA的回答
知道答主
回答量:93
采纳率:0%
帮助的人:0
展开全部
很多控件都可以啊比如DataList,Repeater都可以实现
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式