如果在page_load事件中更改了索引,则不会触发下拉列表SelectedIndexChanged事件

时间:2013-08-07 09:33:37

标签: c# asp.net

我有一个下拉&一个标签,下拉列表与字典绑定。当用户更改下拉列表的选定值时,我想更新标签。以下代码运行良好,但我想设置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;
            }

3 个答案:

答案 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事件。