datalist 里面嵌套repeater 如何弄啊?多谢。

juxianxiang 2010-09-17 03:41:00

<asp:DataList ID="datalist1" runat="server" RepeatDirection="Horizontal">
<ItemTemplate>
<table width="100px" border="0">
<tr>
<td>
<%#Eval("Name") %>
</td>
</tr>
<asp:Repeater ID="repeater1" runat="server">
<ItemTemplate>
<tr>
<td>
<%#Eval("Name") %>
</td>
</tr>
</ItemTemplate>
</asp:Repeater>
</table>
</ItemTemplate>
</asp:DataList>

datalist 有很多行,repeater的DataSource是根据datalist的行的主键值来确定的,数据库是这样

datalist 的DataSource是这样的:select * from table1;
repeater的DataSource是这样:select * from table2 where fk_id=@id;
这个fkid是table1的外键。
如何处理,多谢。
马上结贴,解决了,看我的结贴率。
...全文
107 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
juxianxiang 2010-09-17
  • 打赏
  • 举报
回复
多谢,好像有的眉目了。
ylx1989 2010-09-17
  • 打赏
  • 举报
回复
repeater套repeater

protected void Repeater1_PreRender(object sender, EventArgs e)
{
for (int i = 0; i < Repeater1.Items.Count; i++)
{
HiddenField fkid= (HiddenField)Repeater1.Items[i].FindControl("fkid");
int id = Convert.ToInt32(fkid.Value);
Repeater rp = (Repeater)Repeater1.Items[i].FindControl("Repeater2");

rp.DataSource = ProductTypeManager.getAll("proType_parents_no= " + id);
rp.DataBind();

}
}
wuyq11 2010-09-17
  • 打赏
  • 举报
回复
protected void DataList1_ItemDataBound(object sender, DataListItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
int ID = Convert.ToInt32(DataList1.DataKeys[e.Item.ItemIndex]);
DataSet ds;
DataList DataList2= (DataList)e.Item.FindControl("DataList2");
DataList1.DataSource = ds;
DataList1.DataBind();
}
}

<%# ((Label)((DataLitItem)((DataLit)(((DataLitItem)Container).NamingContainer)).NamingContainer).FindControl("Label1")).Text %>
malingsq 2010-09-17
  • 打赏
  • 举报
回复
ItemDataBound中找到外面套的控件的大类编号,查出数据再给里面的Repeater 来绑定
malingsq 2010-09-17
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 hanqing_liu 的回复:]
protected void DataList1_ItemDataBound(object sender, DataListItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
Repeater r =……
[/Quote]
2楼的应该行.Repeater 也是这样套的.套数据其实用Repeater 什么都能解决.
juxianxiang 2010-09-17
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 msdnxgh 的回复:]
不要这样弄,很麻烦的,因为你找不到repeater的ID;
repeater在datalist内面,它俩都是容器,在容器内的控件的ID,不要原来那个ID了,你这样子弄非常麻烦
你再弄弄其它方法吧。。。
[/Quote]
那一般都是什么方法?请赐教。
要达到这种效果。
juxianxiang 2010-09-17
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 malingsq 的回复:]
为什么一定要用datalist 套.你用repeater套repeater实现不就行了
[/Quote]
行的,随便如何嵌套,应该原理是一样的,如何弄?
MSDNXGH 2010-09-17
  • 打赏
  • 举报
回复
不要这样弄,很麻烦的,因为你找不到repeater的ID;
repeater在datalist内面,它俩都是容器,在容器内的控件的ID,不要原来那个ID了,你这样子弄非常麻烦
你再弄弄其它方法吧。。。
hanqing_liu 2010-09-17
  • 打赏
  • 举报
回复
protected void DataList1_ItemDataBound(object sender, DataListItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
Repeater r = e.Item.FindControl("repeater1") as Repeater;
r.DataSource = null;
r.DataBind();
}
}
malingsq 2010-09-17
  • 打赏
  • 举报
回复
为什么一定要用datalist 套.你用repeater套repeater实现不就行了

62,074

社区成员

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

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

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

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