ASP.net 中怎么给嵌套的DataList赋值

2025-12-06 02:23:20
推荐回答(6个)
回答1:

先在你的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();
}

回答2:

明白了,是手写的那种吧。

如果是直接使用datalist的数据绑定(不手写),就很简单,和外部的一样绑定就可以了

如果是手写,我也没有接触过,不过为什么要嵌套呢,直接写个 inner join 搜索两个表出来,就可以了噻

回答3:

这个问题还没有碰到过,你可以在后台定义几个编量,直接在前台绑定就行了,里面可以不用datalist

回答4:

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

回答5:

请参考我的空间 http://user.qzone.qq.com/229763143/blog/16

回答6:

先在你的DataList上绑定DataMember的数据,也就是你要查询的字段。如下:
ID="DataList1"
runat="server"
DataMember="ID">
然后在添加一个事件:OnItemCreated在这个事件里添加你的代码。代码如下:
ID="DataList1"
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();
}