asp.net 控件列表怎么处理一对多情况?
有这样的情况:一个新闻列表(在ASP中就是一个循环)在asp.net中用控件(自动循环)但假如一次循环中又嵌套了一个子循环列表asp中原理简单:套一个子循环动态open一...
有这样的情况:一个新闻列表(在ASP中就是一个循环)在asp.net中用控件(自动循环) 但假如一次循环中又嵌套了一个子循环列表 asp中原理简单 :套一个子循环 动态open一个rs 但asp.net中怎么做啊?
展开
3个回答
2013-11-07
展开全部
1、我们先在页面中布置好两个DataList。并分别起名,dlsProductMenu,dlsProductInfo。如下:<TABLE id="Table3" cellSpacing="0" cellPadding="0" width="90%" align="center" border="0">
<TBODY>
<TR>
<TD vAlign="top">
<!--主菜单开始--><asp:datalist id="dlsProductMenu" runat="server" RepeatDirection="Horizontal" RepeatColumns="2"
Width="100%">
<ItemTemplate>
<TABLE class="table02" id="Table13" cellSpacing="0" cellPadding="0" width="100%" align="center"
border="0">
<TR bgColor="#f5f5f5">
<TD width="50%" height="30">
<%# DataBinder.Eval(Container.DataItem,"Name") %>
</TD>
</TR>
</TABLE>
<!--子菜单开始-->
<asp:datalist id="dlsProductInfo" Width="100%" runat="server" RepeatColumns="1">
<ItemTemplate>
<TABLE class="table02" id="Table14" cellSpacing="0" cellPadding="0" width="100%" align="center"
border="0">
<TR bgColor="#f5f5f5">
<TD width="50%" height="30">
<DIV class="style10" align="left">标题: <a href='ProductInfoDetail.aspx?subID=<%# DataBinder.Eval(Container.DataItem,"subID") %>'>
<%# DataBinder.Eval(Container.DataItem,"Title") %>
</a>
</DIV>
</TD>
</TR>
</TABLE>
</ItemTemplate>
</asp:datalist>
<!--子菜单结束-->
</ItemTemplate>
</asp:datalist>
<!--主菜单结束--></TD>
</TR>
</TBODY>
</TABLE>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);
}
}
}
}
}
<TBODY>
<TR>
<TD vAlign="top">
<!--主菜单开始--><asp:datalist id="dlsProductMenu" runat="server" RepeatDirection="Horizontal" RepeatColumns="2"
Width="100%">
<ItemTemplate>
<TABLE class="table02" id="Table13" cellSpacing="0" cellPadding="0" width="100%" align="center"
border="0">
<TR bgColor="#f5f5f5">
<TD width="50%" height="30">
<%# DataBinder.Eval(Container.DataItem,"Name") %>
</TD>
</TR>
</TABLE>
<!--子菜单开始-->
<asp:datalist id="dlsProductInfo" Width="100%" runat="server" RepeatColumns="1">
<ItemTemplate>
<TABLE class="table02" id="Table14" cellSpacing="0" cellPadding="0" width="100%" align="center"
border="0">
<TR bgColor="#f5f5f5">
<TD width="50%" height="30">
<DIV class="style10" align="left">标题: <a href='ProductInfoDetail.aspx?subID=<%# DataBinder.Eval(Container.DataItem,"subID") %>'>
<%# DataBinder.Eval(Container.DataItem,"Title") %>
</a>
</DIV>
</TD>
</TR>
</TABLE>
</ItemTemplate>
</asp:datalist>
<!--子菜单结束-->
</ItemTemplate>
</asp:datalist>
<!--主菜单结束--></TD>
</TR>
</TBODY>
</TABLE>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);
}
}
}
}
}
2013-11-07
展开全部
就是datalist嵌套datalist咯 你在Google上搜一下就明白了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-11-07
展开全部
不知道您要实现什么效果~能说的具体些吗?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询