中继器项目模板加载

时间:2009-09-20 10:46:43

标签: asp.net

在网页上,我有一个转发器,我想为其分配一个模板:

 repeater1.ItemTemplate = Page.LoadTemplate("Template.ascx");  

在这个模板上,我有一个按钮。我需要处理这些按钮的Click事件 是否可以在网页的代码隐藏文件上处理,或者我必须为Template.ascx创建一个代码隐藏文件?

因为如果为Template.ascx创建代码隐藏,我无法访问在网页上声明的属性。

2 个答案:

答案 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" />