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;
}
}
在第一项之前是否有"空"项?如果没有,则选择第一个项目将不会改变所选索引(第一个项目已经被选中),并且事件将不会触发。
我将ViewStateMode="true"
添加到DropDownList
中,现在它工作得很好
你的第一个元素已经被选中了,这就是为什么当你再次选择第一个元素时,它的OnSelectedIndexChanged
不会触发,因为你没有改变元素。
OnSelectedIndexChanged
只会在你选择的元素被改变时触发
如果您的第一项设置为Empty string(即string.Empty),请检查。如果是,则将其设置为null。这应该能解决你的问题。
空字符串的问题:-事件不考虑将空字符串更改为新更改的内容。而如果你把它设为null,它会说null已经被改成了字符串值。希望这对你有帮助!快乐编码…