有一个商品订单的IList泛型类,我现在要把商品订单全部呈现出来,
IList<Order> orderList=new List<Order>();//声明
orderList=GetOrderList();//获取订单列表
repeater.DataSource=orderList;//绑定到repeater控件但是orderList类下还有一个成员,orderList.ProductList,这个成员变量是IList类型,是指订单里的产品列表,也就是说一个产品订单里有多个商品.
现在我要把它们用嵌套Repeater显示出来,大家给个方法
示意图如下: 订单一用户名:XX
运送地址:XX
产品列表:
产品1
产品2
…… 订单二用户名:XX
运送地址:XX
产品列表:
产品1
产品2
……
IList<Order> orderList=new List<Order>();//声明
orderList=GetOrderList();//获取订单列表
repeater.DataSource=orderList;//绑定到repeater控件但是orderList类下还有一个成员,orderList.ProductList,这个成员变量是IList类型,是指订单里的产品列表,也就是说一个产品订单里有多个商品.
现在我要把它们用嵌套Repeater显示出来,大家给个方法
示意图如下: 订单一用户名:XX
运送地址:XX
产品列表:
产品1
产品2
…… 订单二用户名:XX
运送地址:XX
产品列表:
产品1
产品2
……
运送地址:XX
产品列表:
产品1
产品2
…… 订单二 用户名:XX
运送地址:XX
产品列表:
产品1
产品2
……
<itemtemplate>
用户名:<%# Eval("X") %>
运送地址:<%# Eval("X") %>
产品列表:<%# Eval("X") %>
<repeater>
<itemtemplate>
产品<%# Eval("X") %>////楼主是不是在这里不知道绑定谁?怎么绑定了? 因为数据源不定?
</itemtemplate>
</repeater>
</itemtemplate>
</repeater>
ds.Relations.Add("myrelation",
ds.Tables["questions"].Columns["id"],
ds.Tables["answers"].Columns["questionsid"]); //Bind the Authors table to the parent Repeater control, and call DataBind.
Repeater1.DataSource = ds.Tables["questions"];
Page.DataBind();
建立父子关系
<asp:Repeater ID="Repeater1" runat="server" OnItemDataBound="Repeater1_ItemDataBound">
<HeaderTemplate>
</HeaderTemplate>
<ItemTemplate>
<a>
<%#Container.ItemIndex + 1%>
.</a><asp:Label ID="Label1" runat="server" Text='<%# Eval("subject") %>'></asp:Label>
<a>
<asp:RadioButtonList runat="server" ID="rblsss" RepeatLayout="Table" RepeatDirection="Horizontal"
DataSource='<%# ((System.Data.DataRowView)Container.DataItem).CreateChildView("myrelation") %>'>
</asp:RadioButtonList>
</a>
</ItemTemplate>
<AlternatingItemTemplate>
<a>
<%#Container.ItemIndex + 1%>
.</a><asp:Label ID="Label1" runat="server" Text='<%# Eval("subject") %>'></asp:Label>
<asp:RadioButtonList runat="server" ID="rblsss" RepeatLayout="Table" RepeatDirection="Horizontal"
DataSource='<%# ((System.Data.DataRowView)Container.DataItem).CreateChildView("myrelation") %>'>
</asp:RadioButtonList>
</a>
</AlternatingItemTemplate>
<SeparatorTemplate>
<br />
</SeparatorTemplate>
<FooterTemplate>
</FooterTemplate>
</asp:Repeater>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 liuyan;
using System.Data.OleDb;
public partial class exam_demo_testpaper : System.Web.UI.Page
{
#region 属性字段
public string strWhere = "";
#endregion protected void Page_Load(object sender, EventArgs e)
{ if (!IsPostBack)
{
Bind_rptFiles();
}
} private void Bind_rptFiles()
{
//Create the connection and DataAdapter for the Authors table.
string connectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|db.mdb;Persist Security Info=True";
OleDbConnection cnn = new OleDbConnection(connectionString);
OleDbDataAdapter cmd1 = new OleDbDataAdapter("select * from questions", cnn); //Create and fill the DataSet.
DataSet ds = new DataSet();
cmd1.Fill(ds, "questions"); //Create a second DataAdapter for the Titles table.
OleDbDataAdapter cmd2 = new OleDbDataAdapter("select * from answers", cnn);
cmd2.Fill(ds, "answers"); //Create the relation bewtween the Authors and Titles tables.
ds.Relations.Add("myrelation",
ds.Tables["questions"].Columns["id"],
ds.Tables["answers"].Columns["questionsid"]); //Bind the Authors table to the parent Repeater control, and call DataBind.
Repeater1.DataSource = ds.Tables["questions"];
Page.DataBind();
//Close the connection.
cnn.Close();
}
protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if(e.Item.ItemType==ListItemType.Item||e.Item.ItemType==ListItemType.AlternatingItem)
{
RadioButtonList rda = e.Item.FindControl("rblsss") as RadioButtonList;
rda.DataTextField = "result";
rda.DataValueField = "id";
rda.DataBind();
}
}
protected void Button1_Click(object sender, EventArgs e)
{
string str = "";
for(int i=0; i< this.Repeater1.Items.Count; i++)
{
RadioButtonList rda = this.Repeater1.Items[i].FindControl("rblsss") as RadioButtonList;
str = str + "|"+ rda.SelectedValue.ToString();
}
this.Label1.Text = str;
}
}
<head runat="server">
<title>无标题页</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Repeater ID="Repeater1" runat="server" OnItemCreated="Repeater1_ItemCreated" OnItemDataBound="Repeater1_ItemDataBound">
<ItemTemplate>
<p>用户名:<%# Eval("UserName") %></p>
<p>地址:<%#Eval("Address") %></p>
<p>产品列表</p>
<asp:Repeater ID="Repeater2" runat="server" OnItemDataBound="Repeater2_ItemDataBound">
<ItemTemplate>
<p> 产品<%# Container.DataItem %></p>
</ItemTemplate>
</asp:Repeater>
</ItemTemplate>
</asp:Repeater>
</div>
</form>
</body>
</html>
using System;
using System.Data;
using System.Configuration;
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;public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
Repeater1.DataSource = getOrderList();
Repeater1.DataBind(); } protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
Trace.Warn("Repeater1_ItemDataBound");
System.Web.UI.WebControls.Repeater repeater2 = (System.Web.UI.WebControls.Repeater)e.Item.FindControl("Repeater2");
repeater2.DataSource = ((Order)e.Item.DataItem).ProductList;
repeater2.DataBind();
} protected void Repeater2_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
Trace.Warn("Repeater1_ItemDataBound");
} public System.Collections.Generic.IList<Order> getOrderList()
{
System.Collections.Generic.IList<Order> orderList = new System.Collections.Generic.List<Order>();
Order ord; ord = new Order();
ord.UserName = "UserA";
ord.Address = "UserA.Address";
orderList.Add(ord); ord = new Order();
ord.UserName = "UserB";
ord.Address = "UserB.Address";
orderList.Add(ord); return orderList;
}
}public class Order
{
private string userName; public string UserName
{
get { return userName; }
set { userName = value; }
}
private string address; public string Address
{
get { return address; }
set { address = value; }
}
private System.Collections.Generic.IList <string> productList; public System.Collections.Generic.IList <string> ProductList
{
get {
productList = new System.Collections.Generic.List <string> ();
string str;
str = UserName + "1";
productList.Add(str);
str = UserName + "2";
productList.Add(str);
str = UserName + "3";
productList.Add(str);
return productList;
}
set { productList = value; }
}}
{
Trace.Warn("Repeater1_ItemDataBound");
System.Web.UI.WebControls.Repeater repeater2 = (System.Web.UI.WebControls.Repeater)e.Item.FindControl("Repeater2");
repeater2.DataSource = ((Order)e.Item.DataItem).ProductList;
repeater2.DataBind();
}
e.Item.FindControl这一句,找到Repeater2,因为Repeater2的实际ID是变化的,所以需要这样找到他,嘻嘻
然后进行数据 绑定
((Order)e.Item.DataItem).ProductList;这一句找到当前条目所对应的数据 <asp:Repeater ID="Repeater2" runat="server" OnItemDataBound="Repeater2_ItemDataBound">
<ItemTemplate>
<p> 产品<%# Container.DataItem %></p>
</ItemTemplate>
</asp:Repeater><%# Container.DataItem %>
这个语句,楼主自己斟酌斟酌..呵呵
用户名:UserA地址:UserA.Address产品列表 产品UserA1 产品UserA2 产品UserA3用户名:UserB地址:UserB.Address产品列表 产品UserB1 产品UserB2 产品UserB3希望能解决楼主的问题
http://download.csdn.net/source/332128
<asp:Repeater ID="Repeater2" runat="server" OnItemDataBound="Repeater2_ItemDataBound">
可以在上面直接指定DataSource 的
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" Trace="false" %><!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>无标题页</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Repeater ID="Repeater1" runat="server" DataSource=<%# getOrderList() %>>
<ItemTemplate>
<p>用户名:<%# Eval("UserName") %></p>
<p>地址:<%#Eval("Address") %></p>
<p>产品列表</p>
<asp:Repeater ID="Repeater2" runat="server" DataSource=<%# ((Order)Container.DataItem).ProductList %> >
<ItemTemplate>
<p> 产品<%# Container.DataItem %></p>
</ItemTemplate>
</asp:Repeater>
</ItemTemplate>
</asp:Repeater>
</div>
</form>
</body>
</html>using System;
using System.Data;
using System.Configuration;
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;public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
Repeater1.DataBind();
} public System.Collections.Generic.IList<Order> getOrderList()
{
System.Collections.Generic.IList<Order> orderList = new System.Collections.Generic.List<Order>();
Order ord; ord = new Order();
ord.UserName = "UserA";
ord.Address = "UserA.Address";
orderList.Add(ord); ord = new Order();
ord.UserName = "UserB";
ord.Address = "UserB.Address";
orderList.Add(ord); return orderList;
}
}public class Order
{
private string userName; public string UserName
{
get { return userName; }
set { userName = value; }
}
private string address; public string Address
{
get { return address; }
set { address = value; }
}
private System.Collections.Generic.IList <string> productList; public System.Collections.Generic.IList <string> ProductList
{
get {
productList = new System.Collections.Generic.List <string> ();
string str;
str = UserName + "1";
productList.Add(str);
str = UserName + "2";
productList.Add(str);
str = UserName + "3";
productList.Add(str);
return productList;
}
set { productList = value; }
}}
{
Repeater1.DataBind();
}