这是个DataList,Repeater嵌套绑定做的,最近我刚做了个Repeater嵌套,你参考下:
.aspx
.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();
}
}
后台就分两部分绑定,具体绑定就不全写出来了,不知道你看得懂不,其实就嵌套循环,各自己绑定。
其实就是两个数据控件的嵌套,重要的不是前台,而是后台如何为子控件绑定数据。
你看下我的代码,我是用两个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
如果还看不懂,就加我吧!
你得嵌套控件。。就是列表里面还有列表
很多控件都可以啊比如DataList,Repeater都可以实现