先在你的DataList上绑定DataMember的数据,也就是你要查询的字段。如下:
然后在添加一个事件:OnItemCreated在这个事件里添加你的代码。代码如下:
protected void DataList1_ItemCreated(object sender, DataListItemEventArgs e)
{
int ID = ((MtNets.ItsWebsite.Model.Category)e.Item.DataItem).ID;
IList list = MtNets.ItsWebsite.BLL.ItsWebInfo.GetByID(ID);
DataList dl = ((Repeater)e.Item.FindControl("DataList2"));
dl.DataSource = list;
dl.DataBind();
}
明白了,是手写的那种吧。
如果是直接使用datalist的数据绑定(不手写),就很简单,和外部的一样绑定就可以了
如果是手写,我也没有接触过,不过为什么要嵌套呢,直接写个 inner join 搜索两个表出来,就可以了噻
这个问题还没有碰到过,你可以在后台定义几个编量,直接在前台绑定就行了,里面可以不用datalist
这是Repeater控件的嵌套方法,datalist依次类推
前台页面部分:
<%# DataBinder.Eval(Container.DataItem, "TypeName") %>
'><%# DataBinder.Eval(Container.DataItem, "ProductName") %>
后台代码部分(部分代码):
//在绑定分类品名时,绑定分类下的产品
private void rptCategories_ItemDataBound(object sender, System.Web.UI.WebControls.RepeaterItemEventArgs e)
{
BLL.Products products =new BLL.Products();
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
Repeater rptProduct = (Repeater) e.Item.FindControl("rptProduct");
//找到分类Repeater关联的数据项
DataRowView rowv = (DataRowView)e.Item.DataItem;
//提取分类ID
int CategorieId = Convert.ToInt32(rowv["ID"]);
//根据分类ID查询该分类下的产品,并绑定产品Repeater
rptProduct.DataSource = products.GetProductsByCategorieId(CategorieId);
rptProduct.DataBind();
}
}
请参考我的空间 http://user.qzone.qq.com/229763143/blog/16
先在你的DataList上绑定DataMember的数据,也就是你要查询的字段。如下:
runat="server"
DataMember="ID">
然后在添加一个事件:OnItemCreated在这个事件里添加你的代码。代码如下:
runat="server"
DataMember="ID"
OnItemCreated="DataList1_ItemCreated">
protected
void
DataList1_ItemCreated(object
sender,
DataListItemEventArgs
e)
{
int
ID
=
((MtNets.ItsWebsite.Model.Category)e.Item.DataItem).ID;
IList
list
=
MtNets.ItsWebsite.BLL.ItsWebInfo.GetByID(ID);
DataList
dl
=
((Repeater)e.Item.FindControl("DataList2"));
dl.DataSource
=
list;
dl.DataBind();
}