在网页上,我有一个转发器,我想为其分配一个模板:
repeater1.ItemTemplate = Page.LoadTemplate("Template.ascx");
在这个模板上,我有一个按钮。我需要处理这些按钮的Click事件 是否可以在网页的代码隐藏文件上处理,或者我必须为Template.ascx创建一个代码隐藏文件?
因为如果为Template.ascx创建代码隐藏,我无法访问在网页上声明的属性。
答案 0 :(得分:0)
您可以在有权访问所需控件后立即访问属性。要执行此操作,您需要在RepeaterItem Repeater控件中搜索按钮。
foreach (RepeaterItem item in Repeater1.Items)
(item.Controls[0].Controls[1] as Button).Click += new EventHandler(ClickHandler);
First Controls属性是item的容器,第二个属性是你的内容,在你的情况下是你的按钮控件。
请注意,如果您的模板控件没有对您想要的页面执行任何操作,可能是数据绑定目的,您应该在模板页面的代码端允许它。
祝你好运
答案 1 :(得分:0)
数据绑定控件使用一种名为event bubbling的技术,允许子控件在控件层次结构中传播事件。单击按钮时,事件“气泡”到包含的转发器控件。然后,您可以通过检查CommandName
的{{1}}属性来确定引发事件的按钮,然后执行相应的操作。
在用户控件中。
RepeaterCommandEventArgs
在您的父页面中处理转发器控件的ItemCommand事件。
<asp:Button ID="btnUpdate" runat="server" Text="Update" CommandName="Update" />
<asp:Button ID="btnDelete" runat="server" Text="Delete" CommandName="Delete" />