repeater嵌套repeater

蚊子的 2009-09-11 02:57:13
<asp:Repeater ID="rptAsk" runat="server" OnItemDataBound="repAsk_ItemDataBound">
<ItemTemplate>
<div>
<%#Eval("Ask_Title")%></div>

<asp:Repeater ID="rptReply" runat="server">
<ItemTemplate>
<div><%#Eval("Reply")%> </div>
</ItemTemplate>
</asp:Repeater>

</li>
</ItemTemplate>
</asp:Repeater>


父表Ask,子表Reply

protected void repAsk_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
conn.open();
根据askid取回复 ds;
conn.close();
rptReply绑定;
}


是不是如此! 这样是可以做出来,但是不觉得一直执行了 conn.open(); conn.close();
难道还有什么办法?
...全文
200 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
红街咖啡 2009-09-12
  • 打赏
  • 举报
回复
你咋搞得那么有创意。
蚊子的 2009-09-11
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 jerry_zuo 的回复:]
引用 8 楼 wjwu1988 的回复:
你都使用 DataSet 了 为什么要 con.open 呢

因为是不一样的dataset。根据问题ID获取dataset。

dataset ds=bll.getList("select * from Reply where replyid="+askid);
//getList() 方法:  sqldatadpter() .... 所有它有开,有闭。虽然不用自己写,但是每次都与连接数据库。




LZ  你的思维有问题。数据操作类 独立出来 写个方法。你这样 每次 开了又关 不累哦。
  GOOGLE 一下 SQLHELPER  最好自己写一个类。汗。
[/Quote]

不好意思,我用的就是 SQLHELPER。。。应该你还没看懂我问的问题。。
jerry_zuo 2009-09-11
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 wjwu1988 的回复:]
你都使用 DataSet 了 为什么要 con.open 呢

因为是不一样的dataset。根据问题ID获取dataset。

dataset ds=bll.getList("select * from Reply where replyid="+askid);
//getList() 方法:  sqldatadpter() .... 所有它有开,有闭。虽然不用自己写,但是每次都与连接数据库。


[/Quote]

LZ 你的思维有问题。数据操作类 独立出来 写个方法。你这样 每次 开了又关 不累哦。
GOOGLE 一下 SQLHELPER 最好自己写一个类。汗。
蚊子的 2009-09-11
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 wuyq11 的回复:]
可以先取出所有回复到LList <T>实体类保存,再根据askid查询相关数据。绑定到reapter
[/Quote]

不能,所有回复不能取出来,太多了。只能先查询出 想取的问题的 askid放在一个变量里面,比如(1,5,6,7,8)。然后再把 in (1,5,6,7,8) 的回复取出来。

最后在重复查询,根据askid在那个实体类里面查询。。。这样做有点繁琐。但是我不知道为什么之前那样做,网络上都传遍了,为什么我写出来,别人都说我做错了。不能那样做。 为什么不在 itemdatabound 里面进行绑定
蚊子的 2009-09-11
  • 打赏
  • 举报
回复
可以先取出所有回复到LList <T>实体类保存,再根据askid查询相关数据。绑定到reapter

不能,所有回复不能取出来,太多了。只能先查询出所有问题的 askid放在一个数组里面。然后再把
in(askid数组) 的回复取出来。

最后在重复查询,根据askid查询。。。这样做有点繁琐。但是我不知道为什么之前那样做,网络上都传遍了,为什么我写出来,别人都说我做错了。不能那样做。
wuyq11 2009-09-11
  • 打赏
  • 举报
回复
可以先取出所有回复到LList<T>实体类保存,再根据askid查询相关数据。绑定到reapter
蚊子的 2009-09-11
  • 打赏
  • 举报
回复
你可以用ajax通过点击上个repeat之后再查下一个
不是我要的效果。我必须让他全显示。
saijie 2009-09-11
  • 打赏
  • 举报
回复
你可以用ajax通过点击上个repeat之后再查下一个
蚊子的 2009-09-11
  • 打赏
  • 举报
回复
嗯,可以取出,但是取出之后,再进行操作? 再进行那样前后台交替,绑定?

我不是怕影响速度,因为我的网站很卡。我估计是这个原因,就是连接数会过多。尽管都有close。
阿非 2009-09-11
  • 打赏
  • 举报
回复
如果你觉得 多次访问影响速度,并且你的表的数据也不是很大,

可以 将主表和 子表的数据 一次都读取出来, 放在DataTable 中

这样 就可以 使用 DataTable 进行查询了
蚊子的 2009-09-11
  • 打赏
  • 举报
回复
你都使用 DataSet 了 为什么要 con.open 呢

因为是不一样的dataset。根据问题ID获取dataset。

dataset ds=bll.getList("select * from Reply where replyid="+askid);
//getList() 方法: sqldatadpter() .... 所有它有开,有闭。虽然不用自己写,但是每次都与连接数据库。

阿非 2009-09-11
  • 打赏
  • 举报
回复
你都使用 DataSet 了 为什么要 con.open 呢
蚊子的 2009-09-11
  • 打赏
  • 举报
回复

又是没有知道怎么做,昨天还说我是疯子。。。
http://topic.csdn.net/u/20090910/16/2028a940-546d-4d1e-82ae-4ff189872499.html
阿彪兄 2009-09-11
  • 打赏
  • 举报
回复
支持一下
蚊子的 2009-09-11
  • 打赏
  • 举报
回复
10个月大的宝宝戒奶以后可以喝核桃奶或者纯牛奶吗?...
是的
不是的
可能吧
ford shelby 和 ford mustang的分别在哪里?~
是的
不是的
点击天涯社区时路由器掉网问题
是的
不是的
oppoT8能下载什么样的手机QQ软件?
是的
不是的
男1982.6.28晚八点
是的
不是的


以上这种,有5个问题,就要绑 5个子项,就是执行了5次了。

蚊子的 2009-09-11
  • 打赏
  • 举报
回复
楼上原理一样,照样是 有几个父项,就执行了几次 conn.open(); conn.close();
别样苍茫 2009-09-11
  • 打赏
  • 举报
回复
得找到索引才行
参考

.在Page_Load事件中添加外层Repeater的ItemDataBound事件,并绑定数据源
ParentRepeater.ItemDataBound += new RepeaterItemEventHandler(ParentRepeater_ItemDataBound);
DataTable table = GetParentData();
if (table != null)
{
ParentRepeater.DataSource = table.DefaultView;
ParentRepeater.DataBind();
}

2.在外层Repeater(ParentRepeater)的ItemDataBound事件中绑定内层Repeater即可:
protected void ParentRepeater_ItemDataBound(object obj, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
DataRowView row = (DataRowView)e.Item.DataItem;
Repeater child = (Repeater)e.Item.FindControl("ChildRepeater");
//此处可以获取表一的ClassName
string className = row["ClassName"].ToString()
//获取父ID
int parentClassID = row["ClassID"].ToString();
//根据父ID读取跟父ID关联的数据绑定到内部Repeater
DataTable table = GetChidData(parentClassID);
if (table != null)
{
child.DataSource = table.DefaultView;
child.DataBind();
}
}
}
蚊子的 2009-09-11
  • 打赏
  • 举报
回复
每绑定父表一个 <ItemTemplate>,就执行了一次 conn.open() conn.close();

62,050

社区成员

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

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

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

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