有时在我们进行数据绑定时,是可能需要进行嵌套绑定的,以显示主从关系的数据。即,一个DataList中嵌套一个子DataList,而子DataList的数据则是随主DataList的数据进行变化的。如下图所示:

1、我们先在页面中布置好两个DataList。并分别起名,dlsProductMenu,dlsProductInfo。如下:
|
Width="100%"> border="0"> <%# DataBinder.Eval(Container.DataItem,"Name") %> |
2、进行数据绑定。
(1)为主DataList绑定主数据。
DataSet ds = SqlDataProvider.GetMainInfo();//获取将要绑定的数据。
this.dlsProductMenu.DataSource = ds;
this.dlsProductMenu.DataBind();
(2)为子DataList绑定从数据。这也是该文的重点。
DataList嵌套的重点是要在外层DataList的ItemDataBound事件中完成对嵌套DataList的绑定。在主DataList的ItemDataBound事件中用e.Item.FindControl方法来找到嵌套层DataList的id,完后为该id绑定数据。比如:
private void dlsProductMenu_ItemDataBound(object sender, System.Web.UI.WebControls.DataListItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item||e.Item.ItemType == ListItemType.AlternatingItem)
{
DataList dataList = (DataList)e.Item.FindControl("dlsProductInfo");
DataRowView rowv = (DataRowView)e.Item.DataItem;
int mainID = Convert.ToInt32(rowv["Id"]);
if(mainID > 0)
{
DataSet ds = SqlDataProvider.GetSubContent(mainID);//获取从数据。
if(ds != null)
{
try
{
dataList.DataSource = ds;
dataList.DataBind();
}
catch(Exception ex)
{
throw new Exception(ex.Message);
}
}
}
}
}

