【发布时间】:2012-04-04 10:32:26
【问题描述】:
我正在使用 asp.net c# 和 jquery
我创建了一个包含两个更新面板(UpdateMode = 条件)的页面,每个更新面板中都有一个带有搜索过滤器(名称、描述等)的表单
每个表单都有一个按钮,当按下该按钮时,将通过在 jQuery 中创建的效果显示高级搜索选项(功能 ToggleAdvOptions,当您单击按钮时会展开一个 div 并且当您返回按合同时)
要加载 jquery 函数,请使用以下脚本:
<script type="text/javascript">
function load() {
var prm = Sys.WebForms.PageRequestManager.getInstance();
prm.add_endRequest(function () {
BindEvents();
});
}
然后我从页面的body onload事件中调用函数load():
<body onload="load();">
问题是,如果我从 UpdatePanel1 进行回发,然后单击按钮以显示高级选项 UpdatePanel2,则 ToggleAdvOptions 函数会执行两次。效果是生成的 div 扩展然后收缩
有人知道如何解决这个问题吗?
最好的问候
【问题讨论】:
-
我不知道,也许我遗漏了一些东西,但我认为您的问题中遗漏了一些 jQuery 代码?
-
这确实是更新面板的“问题”,他们重新加载整个页面,然后将相关内容转储到面板中。正因为如此,你绑定了同一个事件两次,你能不能直接做一个
$(selector).click(function() {})来代替? -
我会考虑完全不使用更新面板。我发现它们太痛苦了,并用 ajax 调用代替了它们。请参阅此博文:encosia.com/why-aspnet-ajax-updatepanels-are-dangerous