You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET DropDownList控件SelectedValue始终获取第一个值的问题

解决ASP.NET DropDownList点击按钮始终获取第一个选项值的问题

这问题我做ASP.NET项目时也踩过一模一样的坑,核心原因是你没在页面回发时跳过DropDownList的数据源绑定操作!

ASP.NET的页面生命周期里,Page_Load事件会先于按钮点击事件执行。如果每次页面请求(包括按钮触发的回发)都重新绑定DropDownList的数据源,就会把用户刚选中的选项直接覆盖掉,导致按钮事件里永远拿到第一个选项的值。

解决方案:给Page_Load的绑定代码加上IsPostBack判断

修改你的Page_Load代码,只在页面首次加载时绑定数据源,回发时跳过绑定,这样就能保留用户的选中状态:

protected void Page_Load(object sender, EventArgs e)
{
    // 仅当页面不是回发请求时才绑定数据源
    if (!IsPostBack)
    {
        combo.DataSource = ds3.Tables[0];
        // 这里可以直接写列名字符串,没必要通过Columns对象取名字,更简洁
        combo.DataTextField = "ProjectName";
        combo.DataValueField = "ID";
        combo.DataBind();
    }
}

额外检查项

  • 确认DropDownList的EnableViewState属性是true(默认就是true),这个属性负责在回发时保存控件的选中状态,如果禁用了也会导致选中值丢失。
  • 按钮点击事件里的代码不用修改,只要上面的绑定逻辑修复了,combo.SelectedValue就能正确获取用户选中的项目ID了。

内容的提问来源于stack exchange,提问作者Saeed Areffard

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 06:28:19