【问题标题】:Selected Index Changed event not firing for a DropDownList during databind at pageload在页面加载时数据绑定期间未触发 DropDownList 的 Selected Index Changed 事件
【发布时间】:2011-06-14 08:29:49
【问题描述】:

我有一个在页面加载期间绑定的下拉列表 (System.Web.UI.WebControls.DropDownList)。

try
     {
        if (!Page.IsPostBack)
           {
              DataTable dt = new StaticNoticeController().GetStaticNoticeNames();
               this.HeadingsDropDownList.AutoPostBack = true;
               this.HeadingsDropDownList.DataSource = new StaticNoticeController().GetStaticNoticeNames();
               this.HeadingsDropDownList.DataTextField = "NoticeName";
               this.HeadingsDropDownList.DataValueField = "NoticeId";                  
                 this.HeadingsDropDownList.DataBind();                                       

           }
     }   
catch (SystemException ex)
    {
                //ToDo: Log the Exception
    }

我希望当我将下拉列表绑定到组合框时触发 SelectedIndex 事件(在 Winforms 中的组合框的情况下会发生这种情况),以便页面加载与下拉列表中的初始值对应的值。

我什至尝试过

this.HeadingsDropDownList.selectedIndex = -1;
在数据绑定后的页面加载中。但徒劳无功。

当我通过浏览器更改下拉列表的索引时,事件会照常触发。 我是否遗漏了什么,或者我试图执行一些不可能的事情?

请帮忙。 提前致谢

【问题讨论】:

    标签: c# .net asp.net controls drop-down-menu


    【解决方案1】:

    这实质上意味着当您加载网站时,它会直接回发。它会卡在一个循环中。

    如果它是一个初始化值,那么回发应该在初始化中完成。

    【讨论】:

    • 谢谢..您建议的解决方案似乎可行。但是 Page init 甚至在页面加载之前就会触发。因此,如果我在 Page_LoadComplete 中编写代码,我面临的问题将得到解决。
    • 确实如此。使用 init 我不是指 asp.net 的 init,而是您自己的初始化例程,最好在页面加载时调用。
    【解决方案2】:

    为什么要触发 SelectedIndexChanged-Event?正如您已经提到的,如果用户在客户端手动更改所选索引,则所选索引将更改。这是期望的行为。如果您最初想在所选索引更改时调用服务器端的函数,请手动调用它!

    【讨论】:

    • 谢谢。下拉列表有一组值。根据下拉列表中的值,将显示一个网格(这发生在 SelectedIndex Changed 事件中)。如果 SelectedIndex Changed 事件未触发,则页面打开时下拉列表中的值,但网格将为空。我需要根据下拉菜单中的初始值填充网格。
    猜你喜欢
    • 2017-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-15
    • 1970-01-01
    • 1970-01-01
    • 2015-01-01
    相关资源
    最近更新 更多