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

2025-01-07 04:18:37
推荐回答(4个)
回答1:

这是个DataList,Repeater嵌套绑定做的,最近我刚做了个Repeater嵌套,你参考下:
.aspx





<%# Eval("title")%>


















.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();
}

}
后台就分两部分绑定,具体绑定就不全写出来了,不知道你看得懂不,其实就嵌套循环,各自己绑定。

回答2:

其实就是两个数据控件的嵌套,重要的不是前台,而是后台如何为子控件绑定数据。
你看下我的代码,我是用两个datalist嵌套的


•<%#Eval("title") %>


"><%#Eval("title") %>





看到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
如果还看不懂,就加我吧!

回答3:

你得嵌套控件。。就是列表里面还有列表

回答4:

很多控件都可以啊比如DataList,Repeater都可以实现