日期:2014-05-17  浏览次数:20416 次

DropDownList的SelectedIndexChanged事件是不是有问题?

环境:VS2005 C#
web.config中设置了<pages enableViewState="false" />禁止所有页面的状态

DropDownList控件设置了 EnableViewState="True" 

<asp:DropDownList ID="dpdLanguage" runat="server" AutoPostBack="True" OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged" EnableViewState="True">
  <asp:ListItem Value="zh-cn">中文</asp:ListItem>
  <asp:ListItem Value="ja-jp">日本語</asp:ListItem>
  <asp:ListItem Value="en-us">English</asp:ListItem>
</asp:DropDownList>

当选择第二项,第三项时会触发DropDownList1_SelectedIndexChanged事件,而选择第一项中文时没有触发DropDownList1_SelectedIndexChanged事件


经过多次测试,把web.config改为<pages enableViewState="true" />时,选择第一项时事件才触发,这算是个bug还是用法有问题?

------解决方案--------------------
从其他项转到第一项的时候也会触发后台事件
只有第一项是你默认项的,而你整个PAGE的viewstate给禁用,
你从其他项转到第一项的时候,由于viewstate给禁用,后台不知道触发了select_changed事件的
------解决方案--------------------
第一项是默认的,所以不会触发事件。如果楼主想也触发事件,建议加一个item,如“请选择...”,然后后台写逻辑,选择项不能为请选择...这一项。曲线救国吧。我也没找到好办法。
看看有没有高人指点。
------解决方案--------------------
我一般都加一个item,“请选择..“
楼主不防也试试
在有你看好这个方法“select_changed”,字面意思是“选择改变”,触发因素是changed,你选择的那项根本没有changed,你让它触发什么?
------解决方案--------------------
楼上正解
------解决方案--------------------
是的,加个
C# code
        DropDownList dropDownList1 = new DropDownList();
        dropDownList1.Items.Add("请选择.....");

------解决方案--------------------
楼上几位正解。接分