我有一个下拉&一个标签,下拉列表与字典绑定。当用户更改下拉列表的选定值时,我想更新标签。以下代码运行良好,但我想设置label的初始值,我在page_load中设置所选索引的值,但事件不会触发。怎么解决?是否有任何页面事件可以帮助我解决问题。我知道我可以使用javascript修复它,但我不想使用JS。
public partial class WebForm1 : System.Web.UI.Page
{
Dictionary<string, string> myDictionary = new Dictionary<string, string>();
protected void Page_Load(object sender, EventArgs e)
{
if (!this.IsPostBack)
{
myDictionary.Add("1", "Test Address 1");
myDictionary.Add("2", "Test Address 2");
myDictionary.Add("3", "Test Address 3");
myDictionary.Add("4", "Test Address 4");
myDictionary.Add("5", "Test Address 5");
drpTest.DataSource = myDictionary;
drpTest.DataTextField = "Key";
drpTest.DataValueField = "Value";
drpTest.DataBind();
// I want to set the index & update the label lblAddress
drpTest.SelectedIndex = 2;
}
}
protected void drpTest_SelectedIndexChanged(object sender, EventArgs e)
{
lblAddress.Text = drpTest.SelectedItem.Value;
}
答案 0 :(得分:2)
在页面加载时更改标签文本。见下文。
protected void Page_Load(object sender, EventArgs e)
{
if (!this.IsPostBack)
{
myDictionary.Add("1", "Test Address 1");
myDictionary.Add("2", "Test Address 2");
myDictionary.Add("3", "Test Address 3");
myDictionary.Add("4", "Test Address 4");
myDictionary.Add("5", "Test Address 5");
drpTest.DataSource = myDictionary;
drpTest.DataTextField = "Key";
drpTest.DataValueField = "Value";
drpTest.DataBind();
drpTest.SelectedIndex = 2;
lblAddress.Text = drpTest.SelectedItem.Value; **// add this**
}
}
希望它适合你。
答案 1 :(得分:2)
你应该在页面加载时调用这个函数
drpTest_SelectedIndexChanged(null, null)
并且它没有正常触发,因为在初始化页面并准备用于客户端后没有更改下拉选择值
答案 2 :(得分:0)
定义下拉列表时,包括drpTest.AutoPostBack = true 这将在更改时触发SelectedIndexChanged事件。