我想利用其中包含多个控制元素的“复杂”用户控件。这是我将在列表中重用的控件,我已经有了一个PlaceHolder控件。
我可以使用 LoadControl(.ascx的路径)添加控件 - 没问题。
我可以通过我的自定义属性获取/设置访问嵌入式标签,这样我就可以完美地初始化每个控件。
但是当添加LinkButtons时,我遇到了麻烦/问题。
当我点击按钮时,我会获得呈现控件的页面的“提交”;但是控件自己的按钮事件似乎没有触发(或者至少父页面上的PageLoad似乎首先触发?) - 我无法弄清楚我的事件发生在哪里或者在哪里寻找名称/ ID或参数按钮。
我怎么在这里做错了?
我现在通过使用带有ID的“硬编码A HREF”的标签制作了一个“假按钮”,但是我想知道我需要捕获什么事件以及在哪里或如何初始化按钮,因为我希望能够为这些用户控件使用“默认的ASP.NET”控件(希望没有太多的拼凑编码)......
答案 0 :(得分:1)
事件“丢失”的唯一原因是因为您的控件没有以这样的方式重新创建,即ASP.Net可以在回发后将事件与控件相关联。它通过使用ID属性来实现。
换句话说,你做错了三件事之一:
1)您在回发后的Init阶段创建阶段分配链接按钮的ID
2)您正在使用代码动态创建链接按钮,但是您在页面生命周期的Init阶段之后执行此操作,因此您的控件不会参与ViewState。
3)您正在重新绑定包含每个回发上的链接按钮的父控件的数据源。使用if (!IsPostBack)
来防止每次都重新绑定它。
在没有看到你的代码的情况下,我不能给出更具体的信息。