【发布时间】:2010-06-18 18:20:37
【问题描述】:
我在 .ascx 文件上有一个复选框。这个 .ascx 文件位于一个封闭源代码的 Web 应用程序中,并且某些东西阻止了 checkchanged 事件每隔一次触发。
当我第一次加载页面并在第一次触发 checkchanged 事件时单击复选框(选中它)。如果我第二次单击它(取消选中),则不会触发 checkchanged 事件。如果我再次检查它,则触发事件,当我再次取消选中它时,它不会触发并继续如此。如果我将复选框的默认值设置为 true,当它加载时,相同的效果只会在第一次取消选中时触发,第二次选中时不会触发,依此类推。
.ascx 所在的页面的 EnableViewState 以及 .ascx 都设置为 true,我什至尝试在复选框本身上设置它。该复选框也将 AutoPostBack 设置为 true。
如果我从该应用程序中提取 .ascx 文件并将其放在测试 Web 应用程序页面上,它会按预期工作。我还最好提到该复选框位于更新面板内,但这似乎并不相关,因为如果我删除更新面板,它仍然具有相同的不利影响。
此应用程序中的什么可能会阻止 checkchanged 事件每隔一段时间触发一次?
【问题讨论】:
-
是否有任何特殊的 javascript 正在输出阻止回发?
-
我知道它肯定会回发两次。只是在第二次单击时,它不会触发 checkchanged 事件,以此类推。
-
我还尝试通过使用 OnLoad 事件处理程序来检查它是否是回发以及是否只是查看复选框是否被选中,但它总是认为它是错误的。 ...知道为什么会这样吗?
-
我遇到了同样的问题。我的 ascx 包含在中继器中。当我选择 1 个项目时,事件触发一次,2 个项目,它触发两次(每个项目一次)。当我取消选中一个项目时,它将触发另一个选中复选框的事件。我确定它与视图状态有关。你弄清楚问题了吗?我已经为这个问题添加了赏金。