定时器导致下拉列表在模式弹出后永久消失

时间:2010-04-08 18:27:50

标签: c# asp.net ajax asp.net-ajax

在一个相当复杂的页面上,我们在IE6中的下拉列表中遇到了一些不寻常的行为。要布局基本结构,页面上有2个更新面板,每个面板都有一个GridView,显示主 - 细节布局。除了网格之外,每个面板都包含一些DropDownLists,用于过滤相应GridView中的数据。

现在发生的事情是底部网格上的按钮将导致显示模式弹出窗体,其中可以修改有关行项目的一些详细信息。根据{{​​1}} ASP.NET AJAXJavaScript期间DropDowns禁用,并在关闭后重新启用。

底部网格还附有一个定时器,定期更新它以保持数据视图的新鲜。当模式弹出窗口关闭后,当这个计时器停止时,下拉列表会神秘地消失,除了那个显然再次渲染的更新postback中的那些。

奇怪的是,如果计时器在弹出窗口打开时滴答,则下拉启用并通过模态显示(哦IE6 ......),但不会在以后消失。

1 个答案:

答案 0 :(得分:1)

我发布这篇文章已经有一段时间了,但问题偶尔会重新出现,我想我终于找到了答案。

AJAX Toolkit的模态弹出窗口javascript禁用页面上的所有DropDownLists,因为它们显示在IE6中的最高Z级别。但是如果某些东西在模态显示时导致回发(就像一个管理不善的计时器)那么隐形状态会被记录到DDL的视图状态中。

一个简单的方法就是将有问题的DDL放在更新面板中,这样它们就可以在更新时正确刷新并且不会卡住。更复杂的方法是确保在模态显示时不会导致任何无关的回发。最好的方法可能是放弃Webforms以及随之而来的所有包袱,但这几乎不会发生。