DropDownList 控件不能触发SelectedIndexChanged 事件的另一个原因
相信DropDownList 控件不能觸發(fā)SelectedIndexChanged 事件已經(jīng)不是什么新鮮事情了,原因也無外乎以下幾種:
1、DropDownList 控件的屬性 AutoPostBack="True" 沒有寫;
2、DropDownList 控件的數(shù)據(jù)綁定沒有放在if (!Page.IsPostBack) 里面;
3、DropDownList 控件選定項(xiàng)的value 值只有在發(fā)生變化時(shí),才將信息發(fā)往服務(wù)器;
詳細(xì)內(nèi)容在六年前l(fā)ovecherry 的一篇博文講解得很清楚,地址:http://www.cnblogs.com/lovecherry/archive/2005/04/26/145705.html
可是,如果以上問題都排除以后,DropDownList 控件仍然不能觸發(fā)SelectedIndexChanged 事件的話,那會(huì)是什么原因呢?
很幸運(yùn),本人今天遇見了。并且最有意思的是:
在火狐(Firefox)中,DropDownList 控件能夠觸發(fā)SelectedIndexChanged 事件;
而在 IE 8中,不好意思,DropDownList 控件對選擇項(xiàng)后毫無反應(yīng),就連Page_Load 事件都根本沒有進(jìn)去!
所以,錯(cuò)誤根本不在DropDownList 控件本身的原因上。
折騰了快2個(gè)小時(shí)后,得出結(jié)論:
由于本人的程序使用了<frameset> 框架,并且DropDownList 控件所在的頁面是使用 window.showModalDialog() 彈出的模態(tài)對話框,
所以,submit 默認(rèn)會(huì)提交到新的頁面窗口。
解決辦法也很簡單,只要在該頁面窗口中的<head> 中添加如下代碼:
<base target=_self></base>
即可!
其實(shí),原因的根本是:
在使用 showModalDialog 的模態(tài)窗體中,必須加上<base? target=_self></base> 才可以提交,否則就會(huì)彈出新的窗口了。
所以很多時(shí)候,錯(cuò)誤的原因并不是我們認(rèn)為的那樣,換一個(gè)角度、換一種思路、換一種方式,可能更容易解決問題。
作者: XuGang?? 網(wǎng)名:鋼鋼
出處: http://xugang.cnblogs.com
聲明: 本文版權(quán)歸作者和博客園共有!轉(zhuǎn)載時(shí)必須保留此段聲明,且在文章頁面明顯位置給出原文連接。
轉(zhuǎn)載于:https://www.cnblogs.com/iceicebaby/archive/2011/08/05/2128774.html
總結(jié)
以上是生活随笔為你收集整理的DropDownList 控件不能触发SelectedIndexChanged 事件的另一个原因的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 学习Java心得体会
- 下一篇: 分享博文摘要图标【11/16更新】