c# - 下拉列表中的第一项根本不会触发 SelectedIndexChanged

标签 c# asp.net

我有以下简单代码:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="testForm.aspx.cs" Inherits="Orbs.testForm" %>
<html>
<body>
    <form id="form1" runat="server">
        <asp:DropDownList ID="dropdown1" runat="server" AutoPostBack="true" OnSelectedIndexChanged="dropdown1_SelectedIndexChanged" ViewStateMode="Enabled">
            <asp:ListItem Value="1" Text="Item 1" />
            <asp:ListItem Value="2" Text="Item 2" />
            <asp:ListItem Value="3" Text="Item 3" />
            <asp:ListItem Value="4" Text="Item 4" />
            <asp:ListItem Value="5" Text="Item 5" />
        </asp:DropDownList>
        <asp:Label runat="server" ID="label1"></asp:Label>
    </form>
</body>
</html>

这是我背后的代码

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

我哪里做错了?

编辑:我注意到如果我将 Selected="True" 添加到下拉列表中的任何项目,该项目就会成为受害者并且不会触发事件!

最佳答案

对于仍然有问题的任何人;我以一种不同但更简单的方式解决了它: 只需将虚拟 ListItem 添加到 DropDownList 的开头并将该项目的 Enabled 属性设置为 false。 即

<asp:DropDownList ID="dropdown1" runat="server" AutoPostBack="true" OnSelectedIndexChanged="dropdown1_SelectedIndexChanged" ViewStateMode="Enabled">
        <asp:ListItem Value="" Text="" Enabled="false" />
        <asp:ListItem Value="1" Text="Item 1" />
        <asp:ListItem Value="2" Text="Item 2" />
        <asp:ListItem Value="3" Text="Item 3" />
        <asp:ListItem Value="4" Text="Item 4" />
        <asp:ListItem Value="5" Text="Item 5" />
    </asp:DropDownList>

关于c# - 下拉列表中的第一项根本不会触发 SelectedIndexChanged,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8699163/

相关文章:

c# - 如何获取星期几的整数值

c# - 子应用程序路径问题

c# - 方法 'System.Linq.Queryable.SelectMany System.Linq.IQueryable 的类型参数

jquery - visual studio 2010 jquery 和 ScriptManager 导致错误

asp.net - 如何集成 ASP.NET 线程模型和 ZeroMQ 套接字?

javascript - 为什么当我加载此页面时,<a> 标签的 href 被调用?

c# - 替换为 Html.BeginForm()

c# - 检查 propertyInfo 是否实现了一个类

c# - 在 Winform C# 中单击按钮打开标签页

c# - 生产环境中的 HttpPostedFileBase null,但测试环境中不是