ASP.NET AJAX Advance Tips & Tricks (1)2011-10-18 cnblogs Lance ZhangCascadingDropDown在IE和Safari中的一个缺陷和解决方法前言:ASP.NET AJAX Toolkit中的CascadingDropDown简单易用,但在IE和Safari中有一个比较明显的性能缺 陷,当数据量大,并且用户使用鼠标滚轮或键盘上下键选取选项时,这个缺陷非常明显。本文介绍通过修 改Toolkit源代码来解决这个问题。(这个问题应该会比较争议,也许很多人并不将其视为缺陷,视情况 而定吧)问题重现:大家可以到ASP.NET AJAX Toolkit官方展示页面看看: http://www.asp.net/AJAX/AjaxControlToolkit/Samples/CascadingDropDown/CascadingDropDown.aspx< /P>如下图所示,当鼠标焦点在父级列表框上时,如果你用的是IE或Safari,请尝试着用鼠标滚轮,或键 盘上下键来更换选项,这时就会发现每次父列表框选项的更改都使子列表框中的选项更新。这意味着,每 次更改都发送了一个WebService请求,去获取子列表框中的列表项集合!

然而在Firefox下,我们会发现,当我们尝试用鼠标滚轮,或键盘上下键来更换选项时,子列表框中的 选项并没有更新,直至父列表框失去焦点。可以想象一下,如果子列表选项集合比较庞大,CascadingDropDown在IE或Safari下的表现将会是一个 非常大的性能损耗。原因:我认为这个现象是由于<select>的onchange事件在IE或Safari和Firefox下的不同执行方式而引 起的。