Repeater中嵌套Repeater的示例介绍_实用技巧

复制代码 代码如下:

protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
this.dtCategory = GetCategoryTable();
this.dtProduct = GetProductTable();
rptCategoryList.DataSource = dtCategory;
rptCategoryList.DataBind();
}
}
// 准备一张分类表
DataTable GetCategoryTable()
{
DataTable dt = new DataTable();
dt.Columns.Add("CategoryId", typeof(int));
dt.Columns.Add("CategoryTitle", typeof(string));
for (int i = 1; i <= 3; i++)
{
DataRow row = dt.NewRow();
row["CategoryId"] = i;
row["CategoryTitle"] = "分类名字 " + i + "";
dt.Rows.Add(row);
}
return dt;
}
// 准备一张产品表
DataTable GetProductTable()
{
DataTable dt = new DataTable();
dt.Columns.Add("ProductTitle", typeof(string));
dt.Columns.Add("CategoryId", typeof(int));
for (int i = 1; i <= 9; i++)
{
DataRow row = dt.NewRow();
row["ProductTitle"] = "产品名字 " + i + "";
if (i > 6) row["CategoryId"] = 3;
else if (i > 3) row["CategoryId"] = 2;
else row["CategoryId"] = 1;
dt.Rows.Add(row);
}
return dt;
}
// 获取某个类别的产品
DataTable GetProductTable(int categoryId)
{
DataView dv = this.dtProduct.DefaultView;
dv.RowFilter = " CategoryId=" + categoryId + " ";
return dv.ToTable();
}
protected void rptCategoryList_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.AlternatingItem || e.Item.ItemType == ListItemType.Item)
{
DataRowView drv = (DataRowView)e.Item.DataItem;
Literal ltlTitle = (Literal)e.Item.FindControl("ltlTitle");
ltlTitle.Text = drv["CategoryTitle"].ToString();
Repeater rptProductList = (Repeater)e.Item.FindControl("rptProductList");
rptProductList.DataSource = GetProductTable(Convert.ToInt32(drv["CategoryId"]));
rptProductList.DataBind();
}
}
protected void rptProductList_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.AlternatingItem || e.Item.ItemType == ListItemType.Item)
{
DataRowView drv = (DataRowView)e.Item.DataItem;
Literal ltlTitle = (Literal)e.Item.FindControl("ltlTitle");
ltlTitle.Text = drv["ProductTitle"].ToString();
}
}

前台aspx代码

复制代码 代码如下:

<</CODE>form id="form1" runat="server">
<</CODE>div>
<</CODE>asp:Repeater ID="rptCategoryList" runat="server" OnItemDataBound="rptCategoryList_ItemDataBound">
<</CODE>ItemTemplate>
<</CODE>div class="listBox">
<</CODE>div class="title">
<</CODE>asp:Literal ID="ltlTitle" runat="server"></</CODE>asp:Literal></</CODE>div>
<</CODE>div class="content">
<</CODE>ul>
<</CODE>asp:Repeater ID="rptProductList" runat="server" OnItemDataBound="rptProductList_ItemDataBound">
<</CODE>ItemTemplate>
<</CODE>li>
<</CODE>asp:Literal ID="ltlTitle" runat="server"></</CODE>asp:Literal>
</</CODE>li>
</</CODE>ItemTemplate>
</</CODE>asp:Repeater>
</</CODE>ul>
</</CODE>div>
</</CODE>div>
</</CODE>ItemTemplate>
</</CODE>asp:Repeat</</CODE>div>
</</CODE>form>

时间: 2024-12-24 02:03:52

Repeater中嵌套Repeater的示例介绍_实用技巧的相关文章

c#网站WebConfig中域名引用示例介绍_实用技巧

在WebConfig中定义如下. 复制代码 代码如下: public class WebConfig { public static string ResourceServer = @"http://www.xxx.com/"; } 在前台页面中这样调用 复制代码 代码如下: <script src="<% =WebConfig.ResourceServer %>/js/jquery-ui-all-min-lastest.js" type=&quo

.net中 关于反射的详细介绍_实用技巧

概述反射• 通过反射可以提供类型信息,从而使得我们开发人员在运行时能够利用这些信息构造和使用对象. • 反射机制允许程序在执行过程中动态地添加各种功能.   运行时类型标识 •运行时类型标识(RTTI),可以在程序执行期间判定对象类型.例如使用它能够确切地知道基类引用指向了什么类型对象.•运行时类型标识,能预先测试某个强制类型转换操作,能否成功,从而避免无效的强制类型转换异常. •在c#中有三个支持RTTI的关键字:is . as  .typeof. 下面依次介绍他们   is运算符: 通过is

AspNetPager控件的最基本用法示例介绍_实用技巧

AspNetPager控件是一个基于.net的第三方免费开源控件,具有开发高效.使用方便.功能完整等优点.它弥补了GridView内置分页以及PageDatasource类辅助分页的不足,将分页数据逻辑和页面UI分离开来,非常有利于SQL分页的实现.下面仅举一个最基本的用法,帮助初学者入门. 到AspNetPage官方网站相应页面下载控件:点击打开链接 下载后解压缩,里面有一个AspNetPager.dll文件,它就是我们要使用的控件.另外还有一个AspNetPager.xml文件,它是对应的文

在RowCommand事件中获取索引值示例代码_实用技巧

在RowCommand事件中获取索引值 1.利用e.CommandSource 复制代码 代码如下: protected void lpg_RowCommand(object sender, GridViewCommandEventArgs e) { if (e.CommandName == "ItemCollect") { GridViewRow gvr = (GridViewRow)(((LinkButton)(e.CommandSource)).NamingContainer);

C#中的switch case使用介绍_实用技巧

在C#中 复制代码 代码如下: switch(type) { case tpye1: break; case tpye2: break; case tpye3: break; case tpye4: break; }; 其中type可以是数字,也可以是字符串:

DataSet与DataTable的区别示例介绍_实用技巧

DataSet:数据集.一般包含多个DataTable,用的时候,dataset["表名"]得到DataTable DataTable:数据表. 一: SqlDataAdapter da=new SqlDataAdapter(cmd); DataTable dt=new DataTable(); da.Fill(dt); ----------------- 直接把数据结果放到 datatable中, 二: SqlDataAdapter da=new SqlDataAdapter(cmd

ASP.NET mvc异常处理的方法示例介绍_实用技巧

1.首先常见保存异常的类(就是将异常信息写入到文件中去) 复制代码 代码如下: public class LogManager { private string logFilePath = string.Empty; public LogManager(string logFilePath) { this.logFilePath = logFilePath; FileInfo file = new FileInfo(logFilePath); if (!file.Exists) { file.C

ASP.NET中application对象的使用介绍_实用技巧

Application对象的应用 1.使用Application对象保存信息 (1).使用Application对象保存信息 Application("键名") = 值 或 Application("键名",值) (2).获取Application对象信息 变量名 = Application("键名") 或:变量名 = Application.Item("键名") 或:变量名 = Application.Get("键

AspNetPager分页控件定义及应用样式示例介绍_实用技巧

网易风格: 首页前页12345678910...后页尾页 CSS样式: 复制代码 代码如下: .anpager .cpb {background:#1F3A87 none repeat scroll 0 0;border:1px solid #CCCCCC;color:#FFFFFF;font-weight:bold;margin:5px 4px 0 0;padding:4px 5px 0;} .anpager a {background:#FFFFFF none repeat scroll 0