嵌套repeater中的Repeater_ItemDataBound事件根本不执行,急

HogwartsRico 2012-12-27 11:17:59
嵌套repeater中的Repeater_ItemDataBound事件根本不执行,急
前台
 <asp:Repeater ID="Repeater1" runat="server" 
onitemdatabound="Repeater1_ItemDataBound">
<ItemTemplate>
<%#Eval("scRech_title1")%><br />
<asp:Repeater ID="Repeater2" runat="server" OnItemDataBound="Repeater2_ItemDataBound" >
<ItemTemplate>
<%#Eval("scRech_title2") %><br />
<%#Eval("scRech_content")%><br />
</ItemTemplate>
</asp:Repeater>
</ItemTemplate>
</asp:Repeater>


后台:
 SqlHelper sqlhelp = new SqlHelper();
DataTable dtable = new DataTable();
DataTable dtable2 = new DataTable();
//protected System.Web.UI.WebControls.Repeater Repeater2;
protected void Page_Load(object sender, EventArgs e)
{
string link = "select distinct XXXX from XXXX where sRech_kind='XXXX'";
dtable = sqlhelp.ExecuteDataTable(link);
this.Repeater1.DataSource = dtable;
Repeater1.DataBind();

}

protected void Repeater2_ItemDataBound(object sender, System.Web.UI.WebControls.RepeaterItemEventArgs e)
{
string link2 = "select scRech_title2 , scRech_content from kxyj_ where sRech_kind='科研项目'";
dtable2 = sqlhelp.ExecuteDataTable(link2);
//Repeater Repeater2 = e.Item.FindControl("Repeater2") as Repeater;
Repeater Repeater2 = (Repeater)e.Item.FindControl("Repeater2");
if(Repeater2 != null)
{
Repeater2.DataSource = dtable2;
Repeater2.DataBind();
}
}


因为repeater2 被嵌套在repeater1里面,所以web根本不识别repeater2,想在属性里面指定ItemDataBound事件是不行的,但是手动写代码之后我打断点发现它根本没有执行,怎么解决,上网找了很多,没解决,求教
...全文
255 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
stanyon2010 2013-10-25
  • 打赏
  • 举报
回复
楼上的方法可以吗?
haibinxx 2013-04-11
  • 打赏
  • 举报
回复
什么谁在谁中,委托和事件怎么都丢的干干净净了,rpt类里有ItemDataBound事件,+=注册上不就行了。 最典型的应用就是后台里的权限树的绑定啊,顶级、二级、三级……配合位运算,又快又方便
haibinxx 2013-04-11
  • 打赏
  • 举报
回复
我晕啊,注册事件不就行了啊,搞那么麻烦?

 protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)
    {
        Repeater rptChild = e.Item.FindControl("Repeater2") as Repeater;
        rptChild.ItemDataBound += rptChild_ItemDataBound;
        Datatable dt  = new dt()
        rptChild.DataSource = dt;
        rptChild.DataBind();
    }
 protected void rptChild_ItemDataBound(object sender, RepeaterItemEventArgs e)
    {
        DataRowView drv = (DataRowView)e.Item.DataItem;
    }
一一一一 2012-12-27
  • 打赏
  • 举报
回复
protected void Repeater2_ItemDataBound改成Repeater1_ItemDataBound
一一一一 2012-12-27
  • 打赏
  • 举报
回复
引用 1 楼 zhang0518suifeng 的回复:
我看着就纳闷 给Repeater2绑定数据怎么会是在Repeater2_ItemDataBound事件里呢?
同感
  • 打赏
  • 举报
回复
Repeater2绑定数据 完全可以放在Repeater1绑定数据之后,还另外写什么绑定事件?
澜月 2012-12-27
  • 打赏
  • 举报
回复
应该在Repeater1_ItemDataBound的事件里绑定Repeater的数据
澜月 2012-12-27
  • 打赏
  • 举报
回复
我看着就纳闷 给Repeater2绑定数据怎么会是在Repeater2_ItemDataBound事件里呢?
HogwartsRico 2012-12-27
  • 打赏
  • 举报
回复
引用 7 楼 kongwei521 的回复:
在第一个Repeater1_ItemDataBound里面 查找第二个Repeater2然后进行绑定。处理 if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) { Repeater Repeat……
嗯,了解了,感谢
蝶恋花雨 2012-12-27
  • 打赏
  • 举报
回复
在第一个Repeater1_ItemDataBound里面 查找第二个Repeater2然后进行绑定。处理 if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) { Repeater Repeater2 = (Repeater)e.Item.FindControl("Repeater2"); string link2 = "select scRech_title2 , scRech_content from kxyj_ where sRech_kind='科研项目'"; dtable2 = sqlhelp.ExecuteDataTable(link2); rptProduct.DataSource =dtable2 ; rptProduct.DataBind(); }
HogwartsRico 2012-12-27
  • 打赏
  • 举报
回复
引用 5 楼 yezhenhua101 的回复:
protected void Repeater2_ItemDataBound改成Repeater1_ItemDataBound
你们的意思是不是不管repeater2。因为repeater2在repeater1中,所以只要给repeater1指定就可以了呢?这样行吗? 我现在也无法验证,因为我已经用另一种方法解决了。我是看的这里的 ,http://www.w17x.com/AritcleDisplay.aspx?id=248 才这么写的

62,075

社区成员

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

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

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

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