我的页面上有添加和删除按钮。 “添加”按钮会在我的页面上的新行中添加一个复选框,两个文本框和一个下拉列表。 删除按钮将删除它们。 通过关注Joe Stagner's example,我可以很好地运行。
问题: 动态创建的控件都需要在选中(对于复选框)时触发相同的事件,也用于选定的索引更改(对于下拉列表)。
我在创建对象时尝试添加事件处理程序,但似乎没有触发?
答案 0 :(得分:1)
我认为你可能会遇到这样一个事实:你的页面在每个帖子的帖子上都被完全重新创建 - 实际上页面必须复制页面上的控件才能尝试提供回发(和事件)给他们。我认为您可能需要做的是向page_load添加代码,该代码将重新创建动态创建的控件,使用与它们相同的ID,并注册事件处理程序。
答案 1 :(得分:1)
答案 2 :(得分:1)
您需要以某种方式[session,viewstate等]为每个页面加载持久保存动态创建的控件。重新创建动态控件,并在preInit函数中的每个页面加载上使用委托重新绑定事件。
答案 3 :(得分:1)
耶, 就像所说的一样,这是生命周期问题。 当您动态加载用户控件时,应始终执行以下操作。
并且为了让我更容易,我建议将加载抽象为您将从之前提到的Page_Load和Page_Init调用的函数,此函数将检查是否已加载目标用户控件并将再次为您加载,这样做,您将加载的用户控件ID存储在Session或viewstate中。
希望这会有所帮助。
答案 4 :(得分:0)
如果你想在没有自动回发的情况下这样做,你可以删除自动回发和抛出ASP按钮。任何runat服务器都应该触发动态事件处理程序。