repeater可以嵌套么? repeater可以嵌套么?比如列表显示几个品牌,每个品牌显示几个产品,用什么方法做比较好?网上有提过用repeater嵌套,我未试过,现在也不想去试,不想看代码,可以的话请用中文解析。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 可以嵌套!假如有两个td第一个td显示品牌第二个td在放个repeater显示产品 第二个reperter的数据源哪里来?用品牌ID再读一次数据库? 哦,那情有可原。在外层repeater的绑定事件中找到外层主键的ID,搜索内层repeater,然后再绑定数据源。 可以Repeater rpt = (Repeater)e.Item.FindControl("Repeater2"); 完全可以嵌套,还是有代码比较清晰。 <asp:Repeater ID="rptTop" runat="server" OnItemDataBound="rptTop_ItemDataBound"> <SeparatorTemplate> <br /> </SeparatorTemplate> <ItemTemplate> <img src="../img/RedDot.gif" /> <a href="SecendLeve.aspx?Id=<%#Eval("Id") %>&pId=<%= Request.QueryString["Id"].ToString()%>"><%#Eval("ClassName") %></a> <div style="margin:0px 0px 0px 30px"> <asp:Repeater ID="rptSecentContent" runat="server" > <SeparatorTemplate> <br /> </SeparatorTemplate> <ItemTemplate> <img src="../img/pointD.jpg" alt="" /> <a href="../Content/ThreeContent.aspx?ThreeId=<%#Eval("Id") %>&Id=<%=Request.QueryString["pId"].ToString() %>&pId=<%=Request.QueryString["Id"].ToString() %>"> <%#Eval("Title").ToString().Length >8?Eval("Title").ToString().Remove(8)+"..." :Eval("Title") %></a> </ItemTemplate> </asp:Repeater> </div> </ItemTemplate> <FooterTemplate> </FooterTemplate> </asp:Repeater> repeater被解析为div,而div是肯定可以嵌套的 Repeater嵌套实例(完整) 可以 在第一个绑定的时候给第二个repeater 指定数据源就行了 protected void rptheme_ItemDataBound(object sender, RepeaterItemEventArgs e) { if (e.Item.ItemType==ListItemType.Item) { Repeater InnerRepeat = e.Item.FindControl("rpimage") as Repeater; DataRowView Dr = (DataRowView)e.Item.DataItem; string rpID = Dr["ID"].ToString(); Ds2.Tables[0].DefaultView.RowFilter = "CID=" + rpID; SnowWolf.OleDBSqlHelper.OleDBSqlHelper Mycm = new SnowWolf.OleDBSqlHelper.OleDBSqlHelper(); string Sqlstr = "select [ID],[CID],[ImageName],[Title] from [V_Theme_Image] where [CID] in(@CID)"; System.Data.OleDb.OleDbParameter[] Param = new System.Data.OleDb.OleDbParameter[1]; Param[0] = new System.Data.OleDb.OleDbParameter("@CID", Convert.ToInt32(rpID)); DataSet Ds = Mycm.AccessDataSet(Sqlstr, Param); Mycm.Dispose(); InnerRepeat.DataSource = Ds; InnerRepeat.DataBind(); } }<asp:Repeater ID="rptheme" runat="server" OnItemDataBound="rptheme_ItemDataBound"> <ItemTemplate> <li> <div class="pic"> <a href="javascript:CreateOverlay(<%# DataBinder.Eval(Container.DataItem, "ID")%>)" > <img src="image/theme/<%# DataBinder.Eval(Container.DataItem, "ImageName")%>" alt="" width="221" height="141"></a></div> <div class="caseText"> <p> <%# DataBinder.Eval(Container.DataItem, "Title")%></p> </div> </li> <div style="display: none;" class="work<%# DataBinder.Eval(Container.DataItem, "ID")%>"> <asp:Repeater ID="rpimage" runat="server"> <ItemTemplate> <a href="image/theme/<%# DataBinder.Eval(Container.DataItem, "CID")%>/<%# DataBinder.Eval(Container.DataItem, "ImageName")%>" title="<%# DataBinder.Eval(Container.DataItem, "Title")%>" class="pirobox_gall_work<%# DataBinder.Eval(Container.DataItem, "CID")%>"> </a> </ItemTemplate> </asp:Repeater> </div> </ItemTemplate> </asp:Repeater>不知道为什么,只是第一个绑定了里面的repeater,后面的没有绑定。 建议用个隐藏域HiddenField保存父级的id使用的时候 HiddenField hd = e.Item.FindControl("hdfID") as HiddenField;int id= Convert.ToInt32(hd.Value.ToString());然后用这个id作为绑定子级Repeater的条件 关于母版的问题 |zyciis| 求一个多主键的NHibernate的Bag的XML写法 谢谢 关于JavaScript跳转框架问题 请大家帮忙! C#--什么情况下应该使用 静态函数? 刚刚开始学ASP.NET,浏览的时候总是出现“未能加载类型”,怎么回事啊,请大家帮忙! 页面响应速变慢的问题 关于刷新的问题 关于WebResponse使用问题? 谁给个vs.ner2003中文版下载地址?3cd的那种 asp.net网站发布上每天首次打开出现错误,刷新或再次打开就会正常显示 这样的sql语句怎么写啊? 关于一个简单功能无法的实现问题
假如有两个td
第一个td显示品牌
第二个td在放个repeater
显示产品
在外层repeater的绑定事件中找到外层主键的ID,搜索内层repeater,然后再绑定数据源。
Repeater rpt = (Repeater)e.Item.FindControl("Repeater2");
<asp:Repeater ID="rptTop" runat="server" OnItemDataBound="rptTop_ItemDataBound">
<SeparatorTemplate>
<br />
</SeparatorTemplate>
<ItemTemplate>
<img src="../img/RedDot.gif" />
<a href="SecendLeve.aspx?Id=<%#Eval("Id") %>&pId=<%= Request.QueryString["Id"].ToString()%>"><%#Eval("ClassName") %></a>
<div style="margin:0px 0px 0px 30px">
<asp:Repeater ID="rptSecentContent" runat="server" >
<SeparatorTemplate>
<br />
</SeparatorTemplate>
<ItemTemplate>
<img src="../img/pointD.jpg" alt="" />
<a href="../Content/ThreeContent.aspx?ThreeId=<%#Eval("Id") %>&Id=<%=Request.QueryString["pId"].ToString() %>&pId=<%=Request.QueryString["Id"].ToString() %>">
<%#Eval("Title").ToString().Length >8?Eval("Title").ToString().Remove(8)+"..." :Eval("Title") %></a>
</ItemTemplate>
</asp:Repeater>
</div>
</ItemTemplate>
<FooterTemplate>
</FooterTemplate>
</asp:Repeater>
{
if (e.Item.ItemType==ListItemType.Item)
{
Repeater InnerRepeat = e.Item.FindControl("rpimage") as Repeater;
DataRowView Dr = (DataRowView)e.Item.DataItem;
string rpID = Dr["ID"].ToString();
Ds2.Tables[0].DefaultView.RowFilter = "CID=" + rpID; SnowWolf.OleDBSqlHelper.OleDBSqlHelper Mycm = new SnowWolf.OleDBSqlHelper.OleDBSqlHelper();
string Sqlstr = "select [ID],[CID],[ImageName],[Title] from [V_Theme_Image] where [CID] in(@CID)";
System.Data.OleDb.OleDbParameter[] Param = new System.Data.OleDb.OleDbParameter[1];
Param[0] = new System.Data.OleDb.OleDbParameter("@CID", Convert.ToInt32(rpID));
DataSet Ds = Mycm.AccessDataSet(Sqlstr, Param);
Mycm.Dispose(); InnerRepeat.DataSource = Ds;
InnerRepeat.DataBind();
}
}<asp:Repeater ID="rptheme" runat="server" OnItemDataBound="rptheme_ItemDataBound">
<ItemTemplate>
<li>
<div class="pic">
<a href="javascript:CreateOverlay(<%# DataBinder.Eval(Container.DataItem, "ID")%>)"
>
<img src="image/theme/<%# DataBinder.Eval(Container.DataItem, "ImageName")%>" alt=""
width="221" height="141"></a></div>
<div class="caseText">
<p>
<%# DataBinder.Eval(Container.DataItem, "Title")%></p>
</div>
</li>
<div style="display: none;" class="work<%# DataBinder.Eval(Container.DataItem, "ID")%>">
<asp:Repeater ID="rpimage" runat="server">
<ItemTemplate>
<a href="image/theme/<%# DataBinder.Eval(Container.DataItem, "CID")%>/<%# DataBinder.Eval(Container.DataItem, "ImageName")%>"
title="<%# DataBinder.Eval(Container.DataItem, "Title")%>" class="pirobox_gall_work<%# DataBinder.Eval(Container.DataItem, "CID")%>">
</a>
</ItemTemplate>
</asp:Repeater>
</div>
</ItemTemplate>
</asp:Repeater>不知道为什么,只是第一个绑定了里面的repeater,后面的没有绑定。
使用的时候
HiddenField hd = e.Item.FindControl("hdfID") as HiddenField;
int id= Convert.ToInt32(hd.Value.ToString());
然后用这个id作为绑定子级Repeater的条件