datalist嵌套问题
发布网友
发布时间:2022-05-19 18:25
我来回答
共2个回答
懂视网
时间:2022-05-19 22:46
当dataList绑定到一个行集合时,直接使用 <%# DataBinder.Eval(Container.DataItem,"fldName") %>时,编译时将会出现 "DataBinder.Eval:“System.Data.DataRow”不包含名称为 fldName 的属性" 的错误
解决办法:将 <%# DataBinder.Eval(Container.DataItem, "fldName")%> 写成 <%# DataBinder.Eval(Container.DataItem, "(fldName)")%>
()也可以用[]来代替。
------------------------------------
例如:
.....
DataSet ds= ... ;
DataTable dt = ... ;
DataRow [] dr=dt.Select(" ... ");
dbList.DataSource=dr;
dbList.DataBind();
---------------------------------
<asp:DataList id="dbList" runat="server" Width="100%" RepeatDirection="Horizontal" RepeatColumns="2">
<ItemTemplate>
公司名称:<%#DataBinder.Eval(Container.DataItem,"[CompanyName]")%>
</ItemTemplate>
</asp:DataList>
也可以写成:
公司名称:<%#DataBinder.Eval(Container.DataItem,"(CompanyName)")%>
具体为什么要写成这样,我也不清楚,研究中...
如果有哪位老大知道,多谢赐教 ^^
热心网友
时间:2022-05-19 19:54
刚好做了一个
一定要在大分类的 ItemDataBound 事件里写
protected void DataList1_ItemDataBound(object sender, DataListItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
DataList myDataList1 = (DataList)e.Item.FindControl("DataList2");
//找到分类关联的数据项
DataRowView row = (DataRowView)e.Item.DataItem;
//提取分类ID
int type1 = Convert.ToInt32(row["id"]);
//根据type1得到typ2的数据
//GetTop3List 是一个方法 得到每个大分类的前三个数据
myDataList1.DataSource = bll.GetTop3List(type1);
myDataList1.DataBind();
}
}