xugang

记录一个.NET 程序员的成长

 

DropDownList 控件不能触发SelectedIndexChanged 事件的另一个原因

 

相信DropDownList 控件不能触发SelectedIndexChanged 事件已经不是什么新鲜事情了,原因也无外乎以下几种:

1、DropDownList 控件的属性 AutoPostBack="True" 没有写;

2、DropDownList 控件的数据绑定没有放在if (!Page.IsPostBack) 里面;

3、DropDownList 控件选定项的value 值只有在发生变化时,才将信息发往服务器;

详细内容在六年前lovecherry 的一篇博文讲解得很清楚,地址:http://www.cnblogs.com/lovecherry/archive/2005/04/26/145705.html

 

可是,如果以上问题都排除以后,DropDownList 控件仍然不能触发SelectedIndexChanged 事件的话,那会是什么原因呢?

很幸运,本人今天遇见了。并且最有意思的是:

在火狐(Firefox)中,DropDownList 控件能够触发SelectedIndexChanged 事件;

而在 IE 8中,不好意思,DropDownList 控件对选择项后毫无反应,就连Page_Load 事件都根本没有进去!

所以,错误根本不在DropDownList 控件本身的原因上。

 

折腾了快2个小时后,得出结论:

由于本人的程序使用了<frameset> 框架,并且DropDownList 控件所在的页面是使用 window.showModalDialog() 弹出的模态对话框,

所以,submit 默认会提交到新的页面窗口。

 

解决办法也很简单,只要在该页面窗口中的<head> 中添加如下代码:

<base target=_self></base>

即可!

 

其实,原因的根本是:

在使用 showModalDialog 的模态窗体中,必须加上<base  target=_self></base> 才可以提交,否则就会弹出新的窗口了。

 

所以很多时候,错误的原因并不是我们认为的那样,换一个角度、换一种思路、换一种方式,可能更容易解决问题。

 

作者: XuGang   网名:钢钢
出处: http://xugang.cnblogs.com
声明: 本文版权归作者和博客园共有!转载时必须保留此段声明,且在文章页面明显位置给出原文连接。
标签: ASP.NET

posted on 2011-07-15 14:49 钢钢 阅读(1997) 评论(15) 编辑 收藏

评论

#1楼[楼主] 2011-07-15 14:54 钢钢      

附加:

IE6 中使用时,如果有 base target标签 必须在日期控件载入后设置。即:

<script language="javascript" type="text/javascript" src="../My97DatePicker/WdatePicker.js"></script> 
<base target="_self" /> 

原因:<base target="_self"/> 与 WdatePicker 有冲突!

可以搜索 <base target="_self" /> WdatePicker.js 找到相应的文档!

 回复 引用 查看   

#2楼 2011-07-15 14:59 guangrou      

弹出窗口刷新它的父页面后,出现不重新发送信息,则无法刷新网页

 回复 引用 查看   

#3楼 2011-07-15 15:24 舍瓦      

折腾了快2个小时后,才得出结论。不知道你这两个小时都在干嘛,调试跟踪一下代码不就能知道是什么问题了吗?  回复 引用 查看   

#4楼[楼主] 2011-07-15 15:35 钢钢      

@舍瓦
哦? 你是说 VS 的F9、F10、F11呢,还是IE、Firefox 的 F12呢?
如果我没有调试,难道是在睡觉?莫非你遇到错误都是一眨眼就解决了!

 回复 引用 查看   

#5楼 2011-07-15 15:43 舍瓦      

引用钢钢:
@舍瓦
哦? 你是说 VS 的F9、F10、F11呢,还是IE、Firefox 的 F12呢?
如果我没有调试,难道是在睡觉?莫非你遇到错误都是一眨眼就解决了!


啥态度啊!难道这样的问题不是debug一下马上就能知道的问题?  回复 引用 查看   

#6楼 2011-07-15 15:58 豆浆咖啡      

呵呵。我也是这样解决的....不过这个很早以前就有解决方案了....  回复 引用 查看   

#7楼[楼主] 2011-07-15 16:14 钢钢      

@舍瓦

引用舍瓦:
引用钢钢:
@舍瓦
哦? 你是说 VS 的F9、F10、F11呢,还是IE、Firefox 的 F12呢?
如果我没有调试,难道是在睡觉?莫非你遇到错误都是一眨眼就解决了!


啥态度啊!难道这样的问题不是debug一下马上就能知道的问题?

先把自己的态度端正好再说别人吧。如果说这个问题你是debug一下马上就能知道的,那我无语。否则,别把事情说得那么轻松,OK?我不是今天才学编程,也不是今天才遇见问题。

 回复 引用 查看   

#8楼 2011-07-15 16:16 舍瓦      

引用钢钢:
@舍瓦
引用舍瓦:
引用钢钢:
@舍瓦
哦? 你是说 VS 的F9、F10、F11呢,还是IE、Firefox 的 F12呢?
如果我没有调试,难道是在睡觉?莫非你遇到错误都是一眨眼就解决了!


啥态度啊!难道这样的问题不是debug一下马上就能知道的问题?

先把自己的态度端正好再说别人吧。如果说这个问题你是debug一下马上就能知道的,那我无语。否则,别把事情说得那么轻松,OK?我不是今天才学编程,也不是今天才遇见问题。


好吧,我错了,对不起。  回复 引用 查看   

#9楼[楼主] 2011-07-15 16:23 钢钢      

@舍瓦
那倒不必,兄弟。
遇到问题肯定需要debug,而这个错误并不是服务器端的,也并不是直接报错,然后停止运行。并且,在 Firefox 下运行正常。也许是我第一次遇到该错误,或者本人水平有限,但希望你知道:
很多时候,问题并不是你说的那么轻松!其实,在没有运行前,我觉得一切都不应发生!

 回复 引用 查看   

#10楼 2011-07-15 16:24 李磊(leige)      

楼主能把自己的心得分享出来时很可贵的。大家都淡定哦。  回复 引用 查看   

#11楼 2011-07-15 16:28 舍瓦      

引用钢钢:
@舍瓦
那倒不必,兄弟。
遇到问题肯定需要debug,而这个错误并不是服务器端的,也并不是直接报错,然后停止运行。并且,在 Firefox 下运行正常。也许是我第一次遇到该错误,或者本人水平有限,但希望你知道:
很多时候,问题并不是你说的那么轻松!其实,在没有运行前,我觉得一切都不应发生!


只能说可能我在这一点,注意,是这一个"bug"点上,我的经验丰富一点吧(差点说成比你经验丰富了,不敢当...不敢当... ^_^)。真诚的感谢你的分享。  回复 引用 查看   

#12楼[楼主] 2011-07-15 16:37 钢钢      

@舍瓦
其实,对JavaScript的调试上,我一直没有找到很好的方法。IE 8 的F12 调试时,总是弹出“无法附加进程。进程可能附加了另一个调试程序。”而Firefox 下运行正常,这让我无法直接跟踪。
如果你对客户端调试有更好的方法和心得,还望多多指教! 谢谢。

 回复 引用 查看   

#13楼 2011-07-15 16:41 舍瓦      

引用钢钢:
@舍瓦
其实,对JavaScript的调试上,我一直没有找到很好的方法。IE 8 的F12 调试时,总是弹出“无法附加进程。进程可能附加了另一个调试程序。”而Firefox 下运行正常,这让我无法直接跟踪。
如果你对客户端调试有更好的方法和心得,还望多多指教! 谢谢。


不敢不敢,只不过遇到特定的问题你发出来我愿意试着去和你一起解决(如果需要的话到时候发我站内信)。IE 8 的F12 调试时,总是弹出“无法附加进程”这个问题我好像没遇到过,不知道你那为什么会有这个问题....  回复 引用 查看   

#14楼 2011-07-15 23:19 Such Cloud      

使用过模态窗口 基本都知道这个缺陷  回复 引用 查看   

#15楼 2011-07-18 10:28 john23.net      

顶个  回复 引用 查看   

导航

统计

公告



穷则独善其身
达则兼济天下


新闻

昵称:钢钢
园龄:4年7个月
荣誉:推荐博客
粉丝:172
关注:54

搜索

 
 

常用链接

我的标签

随笔分类(311)

随笔档案(288)

文章分类(26)

Blog

Tool

Total

Website

积分与排名

最新评论

阅读排行榜

评论排行榜

推荐排行榜