我有一个带有2个中继器的页面,每个中继器都包含一个用户控件。
这个想法是,当您单击左侧转发器中的usercontrol上的按钮时,将从数据库中检索数据并将其设置为右侧转发器的数据源。 我使用事件冒泡将事件从用户控件传递到页面,这样我就可以获取数据并将其设置为其他转发器。
我的问题是,在用户控件按钮事件的页面的事件处理程序中设置转发器源后,不会再次调用ItemDataBound事件处理程序。
这是页面的布局
<div id="leftDiv">
<asp:Repeater ID="rptUser" runat="server">
<ItemTemplate>
<custom:UserInfo ID="cstUserInfo" runat="server" />
<br />
</ItemTemplate>
</asp:Repeater>
</div>
<div id="rightDiv">
<asp:Repeater ID="rptMessages" runat="server">
<ItemTemplate>
<custom:MessageDetails ID="cstMessageDetails" runat="server" />
</ItemTemplate>
</asp:Repeater>
</div>
这是用户控件按钮点击事件的事件处理程序。
private void cstUserInfo_ShowMessagesClicked(object sender, EventArgs e)
{
UserInfoControl userInfoControl = sender as UserInfoControl;
//Get the messages
messageManager = new MessageManager();
List<Messages> messages = messageManager.GetMessageDetailsByUserId(userInfoControl.CurrentUser.Id).ToList();
rptTimeline.DataSource = messages;
rptTimeline.ItemDataBound += new RepeaterItemEventHandler(rptMessages_ItemDataBound);
rptTimeline.DataBind();
}
当我单击用户控件上的按钮时,会发生以下情况:
当按下第一个转发器中用户控件上的按钮时,有没有办法将新数据绑定到第二个转发器?
答案 0 :(得分:1)
你想要使用ItemCreated。
repeater.ItemCreated += new ItemCreatedEventHandler()
每次创建项目以绑定到转发器时都会调用它。