Repeater嵌套问题

Gomes 2011-10-28 06:01:17
<asp:Repeater ID="repUser" runat="server" OnItemCommand="repUser_ItemCommand" OnItemDataBound="repUser_ItemDataBound">
<HeaderTemplate><table><tr><td>用户名</td><td>日期</td><td>名称</td><td>店名</td><td>确认</td></tr></HeaderTemplate>
<ItemTemplate>
<table><tr><td><%# Eval("username") %></td><td>
<asp:Repeater ID="repOrder" runat="server">
<ItemTemplate><table>
<tr><td>
<%# Eval("timer") %><%# Eval("after") %></td><td>
<%# Eval("name") %></td><td>
<%# Eval("shopname") %></td><td>
</td><td>
<asp:Button ID="Button1" runat="server" Text="确认" /></td></tr></table></ItemTemplate>
</asp:Repeater>
</td></tr><tr><td><%#name %></td></tr>
</ItemTemplate>
<FooterTemplate></table></FooterTemplate>
</asp:Repeater>



通过用户名显示每个人所购买过的信息。

大概就是
1 1的信息
1的信息
1的信息
2 2的信息
2的信息
3 3的信息
3的信息


请问Repeater后台代码需要怎么写、

...全文
152 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
Gomes 2011-10-31
  • 打赏
  • 举报
回复
嗯,参照你的代码,七七八八的改了下,可以查询出来了。。
因为限制一贴只能连续回复三次,就没有说明。
谢谢了、

[Quote=引用 15 楼 wknight_it 的回复:]

引用 14 楼 sm357753 的回复:
dv.RowFilter = string.Format("username='{0}'", username);

这句就是sql里的where的意思吗、、初学者好多不懂!
我会尽量多给分的。


RowFilter 就是行过滤,类似where条件的意思

我的代码可以测试的,你有什么问题
[/Quote]
Gomes 2011-10-29
  • 打赏
  • 举报
回复
DataView
为什么还有这个啊?不是用Repeater的吗?
风骑士之怒 2011-10-29
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 sm357753 的回复:]
dv.RowFilter = string.Format("username='{0}'", username);

这句就是sql里的where的意思吗、、初学者好多不懂!
我会尽量多给分的。
[/Quote]

RowFilter 就是行过滤,类似where条件的意思

我的代码可以测试的,你有什么问题
Gomes 2011-10-29
  • 打赏
  • 举报
回复
dv.RowFilter = string.Format("username='{0}'", username);

这句就是sql里的where的意思吗、、初学者好多不懂!
我会尽量多给分的。
Gomes 2011-10-29
  • 打赏
  • 举报
回复
父级Repeater中绑定的实体类型
这个具体是什么呢?
Gomes 2011-10-29
  • 打赏
  • 举报
回复
DataTable dTableOrder = new DataTable();
DataTable dTableUser = new DataTable();
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
Bding();
}
}
public void Bding()
{
string sqlstr = "select DISTINCT username from tb_order";
dTableUser = dbObj.GetDataSetSr(sqlstr, "user");
repUser.DataSource = dTableUser;
repUser.DataBind();
}

protected void repUser_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
Repeater rep = (Repeater)e.Item.FindControl("repOrder");

if (rep != null)
{
string username = "";
foreach (DataRow dr in dTableUser.Rows)
{
username = Convert.ToString(dr[0]);
}
string sqlstr2 = "select * from tb_order where username = '" + username + "'";
dTableOrder = dbObj.GetDataSetSr(sqlstr2, "order");
rep.DataSource = dTableOrder;
rep.DataBind();
}
}


查询出来repOrder的数据不循环,都是显示重复的一条。
lele1028265767 2011-10-29
  • 打赏
  • 举报
回复
protected void repUser_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
strbu.Clear();
Repeater rp = (Repeater)e.Item.FindControl("repOrder");
string username = (父级Repeater中绑定的实体类型)e.Item.DataItem.username;
if (username!= null)
{
//此处自己写数据库语句,将上边的username作为条件进行查询,返回一个dataset:ds
//然后执行下边代码
PagedDataSource pds = new PagedDataSource();
pds.AllowPaging = true;
pds.PageSize = 4;
pds.DataSource = ds.Tables[0].DefaultView;
rp.DataSource = pds;
rp.DataBind();
}
}
}
nizaiganshenme 2011-10-29
  • 打赏
  • 举报
回复
你写一个方法,把用户名传到后台,让后用用户名查询,得到数据付给repeater
Gomes 2011-10-29
  • 打赏
  • 举报
回复
两个repeater的数据都是取自一个表的,就是一个用户有许多数据,我就是想通过用户名来显示每个人的所有数据,但是用户名只出现一次。

例如数据库是
用户名 日期 名称 店名
小明 2011年五月三号 衣服 d&g
小明 2011年五月七号 裤子 lv
小红 2011年五月八号 包 prada
小黄 2011年五月九号 鞋子 lv
小红 2011年五月九号 裤子 gucci


然后显示出来就是
小明 时间 衣服 d&g
时间 裤子 lv
小红 时间 包 prada
时间 裤子 gucci
小黄 时间 鞋子 lv


这样写没有广告嫌疑吧!!!!

[Quote=引用 8 楼 lele1028265767 的回复:]

引用 6 楼 sm357753 的回复:

还是不行啊。。。主要是怎么住取和循环嵌套的repeater数据。

如果子Repeater查询的时候,需要的查询条件,比如ID之类的在父Repeater中没有的话,你可以在父Repeater中添加一个隐藏域,然后更改一下父Repeater的查询条件,读取出子Repeater需要的的数据,将这个放入到隐藏域中,然后在子Repeater查询的时候就……
[/Quote]
lele1028265767 2011-10-29
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 sm357753 的回复:]

还是不行啊。。。主要是怎么住取和循环嵌套的repeater数据。
[/Quote]
如果子Repeater查询的时候,需要的查询条件,比如ID之类的在父Repeater中没有的话,你可以在父Repeater中添加一个隐藏域,然后更改一下父Repeater的查询条件,读取出子Repeater需要的的数据,将这个放入到隐藏域中,然后在子Repeater查询的时候就可以得到父级中的这个数据,作为查询条件进行查询了
lele1028265767 2011-10-29
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 sm357753 的回复:]

DataView
为什么还有这个啊?不是用Repeater的吗?
[/Quote]
这是数据库中读取出来的东西,作为一个数据源绑定到Repeater中
Gomes 2011-10-29
  • 打赏
  • 举报
回复
还是不行啊。。。主要是怎么住取和循环嵌套的repeater数据。
风骑士之怒 2011-10-28
  • 打赏
  • 举报
回复
根据你的代码,写了个简单的例子:

default.aspx

<asp:Repeater ID="repUser" runat="server" OnItemCommand="repUser_ItemCommand" OnItemDataBound="repUser_ItemDataBound">
<HeaderTemplate>
<table>
<tr>
<td>
用户名
</td>
<td>
日期
</td>
<td>
名称
</td>
<td>
店名
</td>
<td>
确认
</td>
</tr>
</HeaderTemplate>
<ItemTemplate>
<table>
<tr>
<td>
<%# Eval("username") %>
</td>
<td>
<asp:Repeater ID="repOrder" runat="server">
<ItemTemplate>
<table>
<tr>
<td>
<%# Eval("name") %>
</td>
<td>
<asp:Button ID="Button1" runat="server" Text="确认" />
</td>
</tr>
</table>
</ItemTemplate>
</asp:Repeater>
</td>
</tr>
<tr>
<td>
</td>
</tr>
</ItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:Repeater>


default.aspx.cs

public partial class Default3 : System.Web.UI.Page
{
DataTable dtOrder = new DataTable();
protected void Page_Load(object sender, EventArgs e)
{
DataTable dtUser = new DataTable();
dtUser.Columns.Add("username", typeof(string));

DataRow dr = dtUser.NewRow();
dr[0] = "a";
dtUser.Rows.Add(dr);

dr = dtUser.NewRow();
dr[0] = "b";
dtUser.Rows.Add(dr);

dr = dtUser.NewRow();
dr[0] = "c";
dtUser.Rows.Add(dr);


dtOrder.Columns.Add("name", typeof(string));
dtOrder.Columns.Add("username", typeof(string));

dr = dtOrder.NewRow();
dr[0] = "a的订单1";
dr[1] = "a";
dtOrder.Rows.Add(dr);

dr = dtOrder.NewRow();
dr[0] = "a的订单2";
dr[1] = "a";
dtOrder.Rows.Add(dr);

dr = dtOrder.NewRow();
dr[0] = "b的订单1";
dr[1] = "b";
dtOrder.Rows.Add(dr);

repUser.DataSource = dtUser;
repUser.DataBind();
}

public DataView GetData(string username)
{
DataView dv = dtOrder.DefaultView;
dv.RowFilter = string.Format("username='{0}'", username);
return dv;
}

protected void repUser_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
Repeater rpt = (Repeater)e.Item.FindControl("repOrder");
if (rpt != null)
{
string username = ((DataRowView)e.Item.DataItem)[0].ToString();
rpt.DataSource = GetData(username);
rpt.DataBind();
}
}
protected void repUser_ItemCommand(object source, RepeaterCommandEventArgs e)
{

}
}
风骑士之怒 2011-10-28
  • 打赏
  • 举报
回复
protected void repUser_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
Repeater rpt = (Repeater)e.Item.FindControl("repOrder");
if (rpt != null)
{
rpt.DataSource = dt; //绑定数据源
rpt.DataBind();
}
}
孟子E章 2011-10-28
  • 打赏
  • 举报
回复
方法有多个,你可以参考
http://dotnet.aspx.cc/article/f73eeaa9-2bdc-47fd-afd2-59f2fa4897f5/read.aspx
http://dotnet.aspx.cc/file/Access-Parent-DataItem-When-DataBinding-in-Nested-Data-Controls.aspx
http://dotnet.aspx.cc/article/54f4c732-aae2-4135-fb1b-7b4b613baa33/read.aspx

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧