dropdownlist中的First Item根本不会触发SelectedIndexChanged
我有以下简单的代码:
这是我背后的代码
using System; namespace Orbs { public partial class testForm: System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { label1.Text = "???!!"; } protected void dropdown1_SelectedIndexChanged(object sender, EventArgs e) { label1.Text = "Fired on " + dropdown1.SelectedValue; } } }
当我第一次进入页面时, label1
显示'???!!'
。 现在我从下拉列表中选择一个项目, label1
显示正确的值但是当我在下拉列表中选择第一个项目时,它再次显示???!!
而不是Fired on 1
上Fired on 1
我做错了什么?
编辑:我注意到如果我在下拉列表中的任何项目中添加Selected="True"
,该项目将成为受害者并且不会触发事件!
对于仍有问题的人; 我以一种不同但更简单的方式解决了它:只需将一个虚拟ListItem添加到DropDownList的开头,并将该项的Enabled属性设置为false。 即
我自己解决了这个问题,
我在某处读到,关闭ViewStateMode
会导致DropDownList
无法正常工作。 在我的Web应用程序中,我不得不关闭ViewStateMode
以实现一些全局任务并逐个打开它。
以某种方式打开DropDownList
上的ViewStateMode
是行不通的,我甚至尝试为页面和母版页打开ViewStateMode
,但DropDownList
仍无法正常工作。 它只在我打开web.config
ViewStateMode
时才起作用。
由于打开web.config
ViewStateMode
不是一个选项,我找到并替代解决方案。 我把它包括在这里,希望能有所帮助。
有同样的问题 – 当选择第一个选项时,SelectedIndexChanged不会触发,我不干净的解决方案是(不确定它是如此聪明但它对我有用),
在Page_Load我添加了以下脚本:
if (!IsPostBack) { //bind data first time } else { int ddlSortByValue = int.Parse(ddlSortBy.SelectedValue); if (ddlSortByValue == 0) { ddlSortBy_SelectedIndexChanged(this, EventArgs.Empty); } }
这样我强制启动SelectedIndexChanged事件
这个问题涵盖了所有可能性比其他post更好,所以我添加了这个明确的答案。 就我而言,@ Edyn的评论有效,即使最初的问题已经存在:
在下拉控件本身上设置ViewStateMode="Enabled"
。
我还在页面顶部的页面声明中设置它,以防万一。
这是.Net 4.0,所以也许有些东西被改变了(但肯定没有很好地修复)。
我有同样的问题,但我通过手动调用onindexchanged
函数解决了它,如下所示:
ddl_SelectedIndexChanged(null, null);
我知道这可能不是完美的方式,但它对我有用。
发生这种情况是因为您将标签设置为“??? !!” 每一页活动。
您需要修改页面加载以检测fa没有发生Postback。
protected void Page_Load(object sender, EventArgs e) { if(!IsPostBack) { label1.Text = "???!!"; } }
在我的情况下,这是因为我使用本地下拉列表变量引用了该下拉列表,并在函数末尾处理了该变量。 我在设置数据源后将第一项添加到下拉列表中。 花了我2个小时找到这个,并在我取消处理电话后工作得很好。
上述就是C#学习教程:dropdownlist中的First Item根本不会触发SelectedIndexChanged分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1002232.html