repeater嵌套
来源:互联网 发布:ug8.0编程中的建模创 编辑:程序博客网 时间:2024/06/05 12:25
Repeater嵌套Repeater的结构:一般写过的都能看懂吧
cs代码:
private void RpTypeBind() {//GetQuestionTypeAndCount() 返回一个datatable this.rptypelist.DataSource = LiftQuestionCtr.GetQuestionTypeAndCount(); this.rptypelist.DataBind(); } protected void rptypelist_ItemDataBound(object sender, RepeaterItemEventArgs e) {//判断里层repeater处于外层repeater的哪个位置( AlternatingItemTemplate,FooterTemplate,//HeaderTemplate,,ItemTemplate,SeparatorTemplate) if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) { Repeater rep = e.Item.FindControl("rpquestionlist") as Repeater;//找到里层的repeater对象 DataRowView rowv = (DataRowView)e.Item.DataItem;//找到分类Repeater关联的数据项 int typeid = Convert.ToInt32(rowv["qtid"]); //获取填充子类的id rep.DataSource = LiftQuestionCtr.GetSomeQuestionsByTypeid(typeid, 2); rep.DataBind(); } }
aspx:
<table border="0" cellpadding="0" cellspacing="0" style="margin-bottom: 5px" width="100%"> <asp:Repeater runat="server" ID="rptypelist" OnItemDataBound="rptypelist_ItemDataBound"> <ItemTemplate> <tr> <td class="fb"> <a href="Lists.aspx?Qtid=<%#Eval("qtid") %>"><%#Eval("qtypename") %></a> <span id="askCount_15" class="date2">[<%#Eval("typecount")%>]</span> </td> </tr> <tr> <td> <div id="askTop2_15" class="ask_list"> <asp:Repeater runat="server" ID="rpquestionlist"> <ItemTemplate> <a href="Question.aspx?qid=<%#Eval("liftquestionid")%>"> <%#Eval("questiontitle")%></a><br /> </ItemTemplate> </asp:Repeater> </div> </td> </tr> </ItemTemplate> </asp:Repeater></table>
此方法应该适合于repeater嵌套,datalist嵌套。
(datalist嵌套前不久试过,也可以)
在一般的网站中浏览类别的用户控件通常都位于大多数 ASP.NET 页的左边,它使用户能够按类别快速的查找产品。最近遇到一个客户,因为在他网站上展示的产品并不多,所以要求在原有类别浏览的基础上将产品也加进去。一来更方便,二来加长了左部导航栏的长度使页面更协调。原有的分类导航栏是由Repeater实现的,现在需要在每一个分类下加入该类的商品信息,于是我想到了在原有Repeater中嵌套Repeater。实现界面如下:
前台页面部分:
<asp:Repeater id="rptCategories" runat="server">
<HeaderTemplate>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
</HeaderTemplate>
<ItemTemplate>
<!--分类名称-->
<tr><th><%# DataBinder.Eval(Container.DataItem, "TypeName") %></th></tr>
<!--分类下的产品-->
<asp:Repeater id="rptProduct" runat="server">
<ItemTemplate>
<tr><td><a href='ProductInfo.aspx?Id=<%# DataBinder.Eval(Container.DataItem, "ID") %>'><%# DataBinder.Eval(Container.DataItem, "ProductName") %></a></td></tr>
</ItemTemplate>
</asp:Repeater>
</ItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:Repeater>
后台代码部分(部分代码):
//在绑定分类品名时,绑定分类下的产品
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();
}
}
实例:
<!-- 父Repeater开始 -->
<asp:Repeater id= "parentRepeater1" runat="server" OnItemDataBound="parentRepeater1_DataBound">
<itemtemplate>
<li onmouseover="ShowUl(this)" onmouseout="HideUl(this)">
<a><%# Eval("ClassName") %></a>
<div class="box">
<!-- 子Repeater开始 -->
<asp:Repeater ID="Repeater2" runat="server">
<ItemTemplate>
<p><a href='<%#"products.aspx?id="+Eval("id") %>'><%#Eval("ClassName") %></a></p>
</ItemTemplate>
</asp:Repeater>
<!-- 子Repeater结束 -->
</div>
</li>
</itemtemplate>
</asp:repeater>
<!-- 父Repeater结束 -->
protected void Page_Load(object sender, EventArgs e)
{
DataTable dat = new dbHelp().getAll("select * from T_ProductClass where FatherID=0"); // 一级分类
parentRepeater1.DataSource = dat.DefaultView;
this.parentRepeater1.DataBind();//一级分类数据源
}
protected void parentRepeater1_DataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
Repeater rep = e.Item.FindControl("Repeater2") as Repeater;//找到里层的repeater对象
DataRowView rowv = (DataRowView)e.Item.DataItem;//找到分类Repeater关联的数据项
int typeid = Convert.ToInt32(rowv["id"]); //获取填充子类的id
DataTable dat = new dbHelp().getAll("select * from T_ProductClass where FatherID=" + typeid); // 一级分类
rep.DataSource = dat.DefaultView;
rep.DataBind(); //二级分类数据源
}
}
- Repeater嵌套
- 嵌套repeater
- repeater嵌套
- repeater嵌套
- Repeater嵌套
- repeater嵌套
- 嵌套repeater
- repeater嵌套
- Repeater嵌套
- 嵌套Repeater
- Repeater嵌套
- Repeater嵌套
- repeater嵌套
- Repeater嵌套Repeater
- Repeater嵌套绑定Repeater
- repeater中嵌套repeater
- Repeater嵌套Repeater
- Repeater嵌套Repeater
- 文件与流(一),thinking in java
- PASCAL 高级编程- 前言
- Codeforces Beta Round #89 (Div. 2)E题,给一联通的无向图,求确定每边的方向,使得任意两点可达
- riyu22
- Windows XP的华彩10年
- repeater嵌套
- 继承,封装,多态
- 第一章 TURBO PASCAL高级编程技术
- 闲谈数据库读写分离
- OpenCV学习笔记(十五)——摄像机的标定和3D重建calib3D
- vim_cheat_sheet_for_programmers
- 技术网站汇总
- dreamweaver随记------dreamweaver中设置超链接不同状态时的样式
- 第二章 实用工具单元