repeater嵌套问题

ly015 2010-11-18 02:50:42
<asp:Repeater ID="Repeater1" runat="server" OnItemDataBound="Repeater1_ItemDataBound">
<HeaderTemplate>
<asp:Repeater ID="Repeater2" runat="server">
<ItemTemplate>
<asp:Label ID="Label2" runat="server" Text='<%#Eval("pc_name") %>'
></asp:Label>
</ItemTemplate>
</asp:Repeater>
</HeaderTemplate>
<ItemTemplate>
<li><span><%#Container.ItemIndex+2 %></span><div class="p-name"><a href='../product.aspx?id=<%#Eval("pc_id") %>'><%#Eval("pc_name") %>
</a></div></li>
</ItemTemplate>
</asp:Repeater>

在这个HeaderTemplate 里Repeater2 的值怎么取到 Repeater1 绑定的值

我在Repeater1_ItemDataBound里写了

if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
string au_id = ((DataRowView)e.Item.DataItem).Row["pc_id"].ToString();
Repeater repeaterSub = (Repeater)e.Item.FindControl("Repeater2");
if (repeaterSub != null)
{
OleDbConnection cn = new OleDbConnection(db.connstring);
OleDbCommand cmd = new OleDbCommand("select * from product where (id = ?)", cn);
cmd.Parameters.Add("user_name", OleDbType.Integer);
cmd.Parameters["pc_id"].Value =au_id;
cn.Open();
repeaterSub.DataSource = cmd.ExecuteReader();
repeaterSub.DataBind();
cn.Close();
}


}

没反应 请问怎么弄
...全文
94 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
hookyzlr 2010-11-18
  • 打赏
  • 举报
回复
你是在headeritem里面绑定的子repeater在绑定事件中
你的条件却是if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)当然没有反映了。
改成
if (e.Item.ItemType == ListItemType.Header)
幕夜 2010-11-18
  • 打赏
  • 举报
回复
你在绑定第一个Repeater时return DataSet或DataTable看下。。。。
莫名其 2010-11-18
  • 打赏
  • 举报
回复
在if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
这加个断点调试下
flyerwing 2010-11-18
  • 打赏
  • 举报
回复
RPFirstType1_ItemDataBound事件里findcontrol然后再绑定.
莫名其 2010-11-18
  • 打赏
  • 举报
回复

<asp:Panel ID="Panel1" runat="server" ScrollBars="Vertical" width="715px" height="670px" BorderStyle="none">
<asp:Repeater ID="RPFirstType1" runat="server" OnItemDataBound="RPFirstType1_ItemDataBound">
<ItemTemplate>
<div id="Row1" style="width:345px; height:150px; border-bottom:1px dashed #A09F9F; float:left">
<div class="bgyp2_pb_le_tu" style="width:107px; height:102px; margin-left:5px; margin-top:5px; float:left; display:inline;"><img src='<%#Eval("CPicture") %>' style="width:100px; height:100px;padding-bottom:3px; padding-left:3px; padding-right:3px; padding-top:3px;border:solid 1px #CCC;"/></div>
<div class="bgyp2_pb_le_zi" style="width:197px; height:122px; margin-left:15px; margin-top:5px; text-align:left; float:left; line-height:20px;"><a href='leibiexiangxi.aspx?CSid=<%#Eval("CSID") %>&CSname=<%#Eval("CSname") %>' class="hui"><font class="style2lan14"><%#Eval("CSname") %></font></a><br/>
<asp:Repeater ID="RPSecondType1" runat="server">
<ItemTemplate>
<font class="style2hui12"><a href="leibiexiangxichanpin.aspx?CSid=<%#Eval("CSID") %>" class="hui"> <%#Eval("CSname") %></a> | </font>
</ItemTemplate>
</asp:Repeater>
</div>
</div>
</ItemTemplate>
</asp:Repeater>
</asp:Panel>



/// <summary>
/// 当repeater数据绑定事件激发时给二级repeater绑定数据
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void RPFirstType1_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
Repeater rp = e.Item.FindControl("RPSecondType1") as Repeater;
DataRowView drv = (DataRowView)e.Item.DataItem;
string csname = drv["CSname"].ToString();
rp.DataSource = cb.GetType1(csname);
try
{
rp.DataBind();
}
catch (Exception nn)
{
Console.WriteLine(nn.Message);
}
}
}


这是我写的一个可以正常运行的方法,你对比下看看。

111,129

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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