repeater嵌套调用请教???!!! repeater嵌套问题,为什么内层的REPEATER在.CS文件中不能调用,??? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 通过Repeater1_ItemDataBound查找Repeater2 Repeater rep = e.Item.FindControl("Repeater2") as Repeater; 我这有个Demo<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head runat="server"> <title>Repeater嵌套</title></head><body> <form id="form1" runat="server"> <div> <table style="border-collapse: collapse;" border="1"> <tr> <th> 订单号 </th> <th> 联系人 </th> <th> 下单时间 </th> <th> 商品信息 </th> </tr> <asp:Repeater ID="Repeater1" runat="server" OnItemDataBound="Repeater1_ItemDataBound"> <ItemTemplate> <tr> <td> <%#Eval("OrderID") %> </td> <td> <%#Eval("LinkMan") %> </td> <td> <%#Eval("SubmitTime") %> </td> <td> <table style="border-collapse: collapse;" border="1"> <tr> <th> 商品编号 </th> <th> 数量 </th> </tr> <asp:Repeater ID="subRepeater" runat="server" OnItemDataBound="subRepeater_ItemDataBound"> <ItemTemplate> <tr> <td> <%#Eval("GoodsID") %> </td> <td> <%#Eval("Amount").ToString() %> </td> </tr> </ItemTemplate> <FooterTemplate> <tr> <td colspan="2"> <asp:Literal ID="literalSum" runat="server"></asp:Literal> </td> </tr> </FooterTemplate> </asp:Repeater> </table> </td> </tr> </ItemTemplate> </asp:Repeater> </table> </div> </form></body></html>引入命名空间using System.Collections.Generic;public partial class _Default : System.Web.UI.Page { /// <summary> /// 订单 /// </summary> public class Order { public string OrderID { set; get; } public string LinkMan { set; get; } public DateTime SubmitTime { set; get; } } /// <summary> /// 商品 /// </summary> public class Goods { public string OrderID { set; get; } public string GoodsID { set; get; } public int Amount { set; get; } } protected void Page_Load(object sender, EventArgs e) { if (!Page.IsPostBack) { this.Repeater1.DataSource = this.GetOrderData(); this.Repeater1.DataBind(); } } /// <summary> /// 获取订单信息 /// </summary> /// <returns>订单列表</returns> public List<Order> GetOrderData() { List<Order> orderList = new List<Order>() { new Order(){ OrderID="s001", LinkMan="张三", SubmitTime=DateTime.Now}, new Order(){ OrderID="s002", LinkMan="李四", SubmitTime=DateTime.Now.AddDays(-1)}, new Order(){ OrderID="s003", LinkMan="王五", SubmitTime=DateTime.Now.AddHours(-8)}, new Order(){ OrderID="s004", LinkMan="赵六", SubmitTime=DateTime.Now.AddHours(-6.5)}, new Order(){ OrderID="s005", LinkMan="小七", SubmitTime=DateTime.Now.AddDays(-2)} }; return orderList; } /// <summary> /// 根据订单号获取商品信息 /// </summary> /// <param name="OrderID">订单编号</param> /// <returns>商品信息列表</returns> public List<Goods> GetGoodsData(string OrderID) { List<Goods> goodsList = new List<Goods>() { new Goods{ OrderID="s001", GoodsID="SC001", Amount=1}, new Goods{ OrderID="s001", GoodsID="SC002", Amount=1}, new Goods{ OrderID="s001", GoodsID="SC003", Amount=6}, new Goods{ OrderID="s002", GoodsID="SC001", Amount=1}, new Goods{ OrderID="s002", GoodsID="SC004", Amount=10}, new Goods{ OrderID="s002", GoodsID="SC005", Amount=1}, new Goods{ OrderID="s005", GoodsID="SC001", Amount=1}, new Goods{ OrderID="s005", GoodsID="SC005", Amount=1}, new Goods{ OrderID="s005", GoodsID="SC007", Amount=1}, new Goods{ OrderID="s005", GoodsID="SC008", Amount=2}, new Goods{ OrderID="s005", GoodsID="SC004", Amount=3}, new Goods{ OrderID="s005", GoodsID="SC009", Amount=1}, }; return goodsList.FindAll(delegate(Goods g) { return g.OrderID == OrderID; }); } protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e) { if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) { sum = 0; //商品总数归零 Repeater subRepeater = e.Item.FindControl("subRepeater") as Repeater; string OrderID = DataBinder.Eval(e.Item.DataItem, "OrderID").ToString(); List<Goods> goodsList = this.GetGoodsData(OrderID); subRepeater.DataSource = goodsList; subRepeater.DataBind(); } } int sum = 0; protected void subRepeater_ItemDataBound(object sender, RepeaterItemEventArgs e) { if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) { int amount = Convert.ToInt32(DataBinder.Eval(e.Item.DataItem, "Amount")); sum += amount; } if (e.Item.ItemType == ListItemType.Footer) { Literal literal = e.Item.FindControl("literalSum") as Literal; literal.Text = "总数:" + sum.ToString(); } } } 用FindControl("ID")来取。<asp:repeater id="repeaterMain" Runat="server" OnItemDataBound="repeaterMain_ItemDataBound"> <ItemTemplate> <table> <tr><td> <a href= " <%#"Details.aspx?au_id=" + DataBinder.Eval(Container,"DataItem.au_id")%> "> <%#DataBinder.Eval(Container,"DataItem.au_id")%> </a> 大类<br> </td> </tr> <asp:repeater ID="repeaterSub" Runat="server"> <ItemTemplate> <tr> <td> <a href= " <%#"Details.aspx?title_id=" + DataBinder.Eval(Container,"DataItem.title_id")%> "> <%#DataBinder.Eval(Container, "DataItem.title_id")%> </a> 小类 </td> </tr> </ItemTemplate> </asp:repeater> </table> </ItemTemplate> </asp:repeater>protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { BindMain(); } } private void BindMain() { SqlConnection cn = new SqlConnection(@"server=(local);uid=sa;pwd=1234567890;database=pubs"); SqlDataAdapter da = new SqlDataAdapter("select au_id from authors", cn); DataSet ds = new DataSet(); cn.Open(); da.Fill(ds); repeaterMain.DataSource = ds.Tables[0].DefaultView; repeaterMain.DataBind(); cn.Close(); } protected void repeaterMain_ItemDataBound(object sender, RepeaterItemEventArgs e) { if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) { string au_id = ((DataRowView)e.Item.DataItem).Row["au_id"].ToString(); Repeater repeaterSub = (Repeater)e.Item.FindControl("repeaterSub"); if (repeaterSub != null) { SqlConnection cn = new SqlConnection(@"server=(local);uid=sa;pwd=1234567890;database=pubs"); SqlCommand cmd = new SqlCommand("select title_id from titleauthor where au_id = @au_id", cn); cmd.Parameters.Add("@au_id", SqlDbType.VarChar, 11).Value = au_id; cn.Open(); repeaterSub.DataSource = cmd.ExecuteReader(); repeaterSub.DataBind(); cn.Close(); } } }参考 生成网站时提示"当前上下文中不存在名称"checkresult",可页面中明明有呀? 有关/ \的问题 大家怎么绑定数据库和treeview? SuperWeb For Asp.Net 广而告之 连接远程sqlserver数据库的字符窜是什么 高手帮忙解决关于datalist的简单问题 高手,奇怪的自定义分页DataGrid,和TreeView问题!! TreeView右键菜单问题 高分求助!50分!请高手救我啊! 正在终止线程 未将对象引用设置到对象的实例。 索引长度问题 跪求解答[急!!!!!!] 在线等
查找Repeater2
Repeater rep = e.Item.FindControl("Repeater2") as Repeater;
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Repeater嵌套</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<table style="border-collapse: collapse;" border="1">
<tr>
<th>
订单号
</th>
<th>
联系人
</th>
<th>
下单时间
</th>
<th>
商品信息
</th>
</tr>
<asp:Repeater ID="Repeater1" runat="server" OnItemDataBound="Repeater1_ItemDataBound">
<ItemTemplate>
<tr>
<td>
<%#Eval("OrderID") %>
</td>
<td>
<%#Eval("LinkMan") %>
</td>
<td>
<%#Eval("SubmitTime") %>
</td>
<td>
<table style="border-collapse: collapse;" border="1">
<tr>
<th>
商品编号
</th>
<th>
数量
</th>
</tr>
<asp:Repeater ID="subRepeater" runat="server" OnItemDataBound="subRepeater_ItemDataBound">
<ItemTemplate>
<tr>
<td>
<%#Eval("GoodsID") %>
</td>
<td>
<%#Eval("Amount").ToString() %>
</td>
</tr>
</ItemTemplate>
<FooterTemplate>
<tr>
<td colspan="2">
<asp:Literal ID="literalSum" runat="server"></asp:Literal>
</td>
</tr>
</FooterTemplate>
</asp:Repeater>
</table>
</td>
</tr>
</ItemTemplate>
</asp:Repeater>
</table>
</div>
</form>
</body>
</html>引入命名空间
using System.Collections.Generic;public partial class _Default : System.Web.UI.Page
{
/// <summary>
/// 订单
/// </summary>
public class Order
{
public string OrderID { set; get; }
public string LinkMan { set; get; }
public DateTime SubmitTime { set; get; }
} /// <summary>
/// 商品
/// </summary>
public class Goods
{
public string OrderID { set; get; }
public string GoodsID { set; get; }
public int Amount { set; get; }
} protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
this.Repeater1.DataSource = this.GetOrderData();
this.Repeater1.DataBind();
}
} /// <summary>
/// 获取订单信息
/// </summary>
/// <returns>订单列表</returns>
public List<Order> GetOrderData()
{
List<Order> orderList = new List<Order>()
{
new Order(){ OrderID="s001", LinkMan="张三", SubmitTime=DateTime.Now},
new Order(){ OrderID="s002", LinkMan="李四", SubmitTime=DateTime.Now.AddDays(-1)},
new Order(){ OrderID="s003", LinkMan="王五", SubmitTime=DateTime.Now.AddHours(-8)},
new Order(){ OrderID="s004", LinkMan="赵六", SubmitTime=DateTime.Now.AddHours(-6.5)},
new Order(){ OrderID="s005", LinkMan="小七", SubmitTime=DateTime.Now.AddDays(-2)}
};
return orderList;
} /// <summary>
/// 根据订单号获取商品信息
/// </summary>
/// <param name="OrderID">订单编号</param>
/// <returns>商品信息列表</returns>
public List<Goods> GetGoodsData(string OrderID)
{
List<Goods> goodsList = new List<Goods>()
{
new Goods{ OrderID="s001", GoodsID="SC001", Amount=1},
new Goods{ OrderID="s001", GoodsID="SC002", Amount=1},
new Goods{ OrderID="s001", GoodsID="SC003", Amount=6},
new Goods{ OrderID="s002", GoodsID="SC001", Amount=1},
new Goods{ OrderID="s002", GoodsID="SC004", Amount=10},
new Goods{ OrderID="s002", GoodsID="SC005", Amount=1},
new Goods{ OrderID="s005", GoodsID="SC001", Amount=1},
new Goods{ OrderID="s005", GoodsID="SC005", Amount=1},
new Goods{ OrderID="s005", GoodsID="SC007", Amount=1},
new Goods{ OrderID="s005", GoodsID="SC008", Amount=2},
new Goods{ OrderID="s005", GoodsID="SC004", Amount=3},
new Goods{ OrderID="s005", GoodsID="SC009", Amount=1},
};
return goodsList.FindAll(delegate(Goods g) { return g.OrderID == OrderID; });
} protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
sum = 0; //商品总数归零
Repeater subRepeater = e.Item.FindControl("subRepeater") as Repeater;
string OrderID = DataBinder.Eval(e.Item.DataItem, "OrderID").ToString();
List<Goods> goodsList = this.GetGoodsData(OrderID);
subRepeater.DataSource = goodsList;
subRepeater.DataBind();
}
} int sum = 0;
protected void subRepeater_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
int amount = Convert.ToInt32(DataBinder.Eval(e.Item.DataItem, "Amount"));
sum += amount;
}
if (e.Item.ItemType == ListItemType.Footer)
{
Literal literal = e.Item.FindControl("literalSum") as Literal;
literal.Text = "总数:" + sum.ToString();
}
}
}
<asp:repeater id="repeaterMain" Runat="server" OnItemDataBound="repeaterMain_ItemDataBound">
<ItemTemplate>
<table>
<tr><td>
<a href= " <%#"Details.aspx?au_id=" + DataBinder.Eval(Container,"DataItem.au_id")%> "> <%#DataBinder.Eval(Container,"DataItem.au_id")%> </a> 大类<br>
</td>
</tr>
<asp:repeater ID="repeaterSub" Runat="server">
<ItemTemplate>
<tr>
<td>
<a href= " <%#"Details.aspx?title_id=" + DataBinder.Eval(Container,"DataItem.title_id")%> "> <%#DataBinder.Eval(Container, "DataItem.title_id")%> </a> 小类
</td>
</tr>
</ItemTemplate>
</asp:repeater>
</table>
</ItemTemplate>
</asp:repeater>protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
BindMain();
}
} private void BindMain()
{
SqlConnection cn = new SqlConnection(@"server=(local);uid=sa;pwd=1234567890;database=pubs");
SqlDataAdapter da = new SqlDataAdapter("select au_id from authors", cn);
DataSet ds = new DataSet();
cn.Open();
da.Fill(ds);
repeaterMain.DataSource = ds.Tables[0].DefaultView;
repeaterMain.DataBind();
cn.Close();
} protected void repeaterMain_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
string au_id = ((DataRowView)e.Item.DataItem).Row["au_id"].ToString();
Repeater repeaterSub = (Repeater)e.Item.FindControl("repeaterSub");
if (repeaterSub != null)
{
SqlConnection cn = new SqlConnection(@"server=(local);uid=sa;pwd=1234567890;database=pubs");
SqlCommand cmd = new SqlCommand("select title_id from titleauthor where au_id = @au_id", cn);
cmd.Parameters.Add("@au_id", SqlDbType.VarChar, 11).Value = au_id;
cn.Open();
repeaterSub.DataSource = cmd.ExecuteReader();
repeaterSub.DataBind();
cn.Close();
}
}
}参考