做一个商品分类显示的功能,两个repeater嵌套
代码如下:cs code:using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;public partial class Repeater : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
//Repeater1绑定
BLLProduct exm = new BLLProduct();
DataTable dt = exm.selectIndex();
this.Repeater1.DataSource = dt;
Repeater1.DataBind();
}
protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
//实力化Repeater2
Repeater rep = e.Item.FindControl("Repeater2") as Repeater;
//实例化Repeater1的行
DataRowView rowv = (DataRowView)e.Item.DataItem;
//取datatlist1行值
string mainID = rowv["MAIN_TYPE_ID"].ToString(); if (mainID != "")
{
//绑定Repeater2数据
BLLProduct exm = new BLLProduct();
DataTable dt = exm.selectIndexSub(mainID);//获取从数据。
if (dt != null)
{
try
{
rep.DataSource = dt;<----这里VS报错,没有DataSource的定义
rep.DataBind();
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
}
}
}
}
}aspx code:
<table border="0" cellpadding="0" cellspacing="0" style="margin-bottom: 5px" width="100%">
<asp:Repeater runat="server" ID="Repeater1" OnItemDataBound="Repeater1_ItemDataBound">
<ItemTemplate>
<tr>
<td class="fb">
<a href="../Book/Bookjdshow.aspx?lbid= <%# Eval("ProductId")%>&cs=<%# Eval("MAIN_TYPE_ID")%>" style="color: black;font-weight: bold; font-size:14px;" > <%# Eval("TYPE_NAME")%> </a>
</td>
</tr>
<tr>
<td>
<asp:Repeater runat="server" ID="Repeater2">
<ItemTemplate>
<a href="../Book/Bookjdshow.aspx?lbid= <%# Eval("ProductId") %>&cs=0" style="font-size:12px;">
<%# Eval("TYPE_NAME")%> </a> <br />
</ItemTemplate>
</asp:Repeater>
</td>
</tr>
</ItemTemplate>
</asp:Repeater>
</table>参考页面:http://b2b.smeyz.gov.cn/,顺便问下,像这个网站这样,repeater分两列显示数据,并且蓝白相间,谁有什么思路?这两功能任意一种单独实现我都会,搞在一起我就弄不出来了
代码如下:cs code:using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;public partial class Repeater : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
//Repeater1绑定
BLLProduct exm = new BLLProduct();
DataTable dt = exm.selectIndex();
this.Repeater1.DataSource = dt;
Repeater1.DataBind();
}
protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
//实力化Repeater2
Repeater rep = e.Item.FindControl("Repeater2") as Repeater;
//实例化Repeater1的行
DataRowView rowv = (DataRowView)e.Item.DataItem;
//取datatlist1行值
string mainID = rowv["MAIN_TYPE_ID"].ToString(); if (mainID != "")
{
//绑定Repeater2数据
BLLProduct exm = new BLLProduct();
DataTable dt = exm.selectIndexSub(mainID);//获取从数据。
if (dt != null)
{
try
{
rep.DataSource = dt;<----这里VS报错,没有DataSource的定义
rep.DataBind();
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
}
}
}
}
}aspx code:
<table border="0" cellpadding="0" cellspacing="0" style="margin-bottom: 5px" width="100%">
<asp:Repeater runat="server" ID="Repeater1" OnItemDataBound="Repeater1_ItemDataBound">
<ItemTemplate>
<tr>
<td class="fb">
<a href="../Book/Bookjdshow.aspx?lbid= <%# Eval("ProductId")%>&cs=<%# Eval("MAIN_TYPE_ID")%>" style="color: black;font-weight: bold; font-size:14px;" > <%# Eval("TYPE_NAME")%> </a>
</td>
</tr>
<tr>
<td>
<asp:Repeater runat="server" ID="Repeater2">
<ItemTemplate>
<a href="../Book/Bookjdshow.aspx?lbid= <%# Eval("ProductId") %>&cs=0" style="font-size:12px;">
<%# Eval("TYPE_NAME")%> </a> <br />
</ItemTemplate>
</asp:Repeater>
</td>
</tr>
</ItemTemplate>
</asp:Repeater>
</table>参考页面:http://b2b.smeyz.gov.cn/,顺便问下,像这个网站这样,repeater分两列显示数据,并且蓝白相间,谁有什么思路?这两功能任意一种单独实现我都会,搞在一起我就弄不出来了
解决方案 »
- C#如何调用API查找窗体并关闭找到的窗体
- 求帮忙编个 指南针 4天了哭死
- 请问怎样用c#发送一个tcp确认包
- 当Form的FormBorderStyle为None时,如何用鼠标拖动窗体?
- 如何用Listview.Items.AddRange读取文本中数据,求好心人..
- 谁能详细解释下DATAGRID和GridView的区别?
- webbroswer word 工具栏 菜单栏 消失
- .Net中如何简单地播放wav文件?
- 在ASP_NET中的嵌套属性为什么不能实现?(UP有分)
- 在c#中调用用delphi和vb写的dll的问题。编译能通过,但运行出错。
- 请问哪里有c#开发DirectX方面好的材料或交流组织?
- 救命呀!这样设计(winform+webform)是否合适
Repeater rep = e.Item.FindControl("Repeater2") as Repeater;
这样写rep是指你的页面类对象,解决办法有两个:
1、把你的页面类改个名字
2、上面那句改成这样:
System.Web.UI.WebControls.Repeater rep = e.Item.FindControl("Repeater2") as System.Web.UI.WebControls.Repeater;