OnSelectedIndexChanged事件不会为下拉列表的第一个元素触发

本文关键字:第一个 元素 下拉列表 事件 OnSelectedIndexChanged | 更新日期: 2023-09-27 17:54:21

我有一个DropDownList, OnSelectedIndexChanged事件的方法改变了一个标签的内容。除了DropDownList的第一个元素外,它工作得很好。什么好主意吗?

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Newsletter.DAL;
using Newsletter.Services;
public partial class Senders : System.Web.UI.Page
{
    private SenderService _client;
    private List<Sender> _allSenders;
    private DropDownList _dropDownListSenders;
    private TextBox _emailBox;
    private string _selectedSender;
    protected void Page_Load(object sender, EventArgs e)
    {
        _client = new SenderService();
        _allSenders = _client.GetAllSenders();
        _dropDownListSenders = (DropDownList)loginViewMain.FindControl("DropDownListSenders");
        _emailBox = (TextBox)loginViewMain.FindControl("textBoxEmail");
    }
 protected void DropDownListSenders_SelectedIndexChanged(object sender, EventArgs e)
    {
        _selectedSender = _dropDownListSenders.SelectedValue;
        _emailBox.Text = _selectedSender;
    }
}

OnSelectedIndexChanged事件不会为下拉列表的第一个元素触发

在第一项之前是否有"空"项?如果没有,则选择第一个项目将不会改变所选索引(第一个项目已经被选中),并且事件将不会触发。

我将ViewStateMode="true"添加到DropDownList中,现在它工作得很好

你的第一个元素已经被选中了,这就是为什么当你再次选择第一个元素时,它的OnSelectedIndexChanged不会触发,因为你没有改变元素。
OnSelectedIndexChanged只会在你选择的元素被改变时触发

如果您的第一项设置为Empty string(即string.Empty),请检查。如果是,则将其设置为null。这应该能解决你的问题。

空字符串的问题:-事件不考虑将空字符串更改为新更改的内容。而如果你把它设为null,它会说null已经被改成了字符串值。希望这对你有帮助!快乐编码…