private void rptHotelList_ItemDataBound(object sender, System.Web.UI.WebControls.RepeaterItemEventArgs e)
{
switch(e.Item.ItemType)

case ListItemType.Item: 
case ListItemType.AlternatingItem: 
case ListItemType.EditItem:
{
Repeater rptroomlist = (Repeater)e.Item.FindControl("rptRoomList");
rptroomlist.ItemDataBound += new RepeaterItemEventHandler(rptroomlist_ItemDataBound);
// ImageButton btn = (ImageButton)e.Item.FindControl("btnDel_1"); 
// if(btn != null)
// btn.Attributes.Add("onclick", "return confirm('你是否确定删除这条记录');"); 
break; 

}
}
private void rptroomlist_ItemDataBound(object sender, System.Web.UI.WebControls.RepeaterItemEventArgs e)
{
switch(e.Item.ItemType)

case ListItemType.Item: 
case ListItemType.AlternatingItem: 
case ListItemType.EditItem:
{
ImageButton btn = (ImageButton)e.Item.FindControl("btnDel_1"); 
if(btn != null)
btn.Attributes.Add("onclick", "return confirm('你是否确定删除这条记录');"); 
break; 

}
}

解决方案 »

  1.   

    Repeater本来就没有dataitembound这样的事件,怎么能触发呢?你说的应该是ItemDataBound事件,这个事件在将数据绑定到Repeater的项时发生,如果你没有绑定数据,这个事件也就不会被引发。
      

  2.   

    吴旗娃说得很有道理
    现在我明白为什么了,只因为我的内嵌reapter之DataSource
    <asp:repeater id="rptRoomList" Runat="server" DataSource='<%# getRoomList((int)DataBinder.Eval(Container.DataItem, "HID"))%>'>
    ………………
    </asp:repeater>
    在.cs页里,把它写成rptRoomList.DataSourece=data();rptRoomList.DataBind();应该就可以了
    但在这里,好像服务器控件在<asp:Lable id="hid">DataBinder.Eval(Container.DataItem, "HID")%></asp:Lable>这样是不行的,这样的话在外层的repeater里的DataItemBound事件里用FindControl事件找不到Lable控件hid的Text。如何可以解决这个问题呢?
      

  3.   

    如果Label控件在子Repeater中,在父Repeater的ItemDataBound中当然不可能通过FindControl方法来找到子Repeater模板中的控件,不知道你具体在父Repeater中找子Repeater中的Label做什么?