【问题标题】:ASP.Net dropdownlist not returning index on selectedindexchanged eventASP.Net 下拉列表未在 selectedindexchanged 事件上返回索引
【发布时间】:2011-06-27 15:17:35
【问题描述】:

我有一个下拉列表控件,其中包含正确触发的 selectedindexchanged 事件。但是,当您从列表中选择一个项目时,返回给 selectedindexchanged 事件的索引值不会改变;列表框弹出到列表中的第一个项目。任何帮助,将不胜感激。 ~苏珊~

ASP 下拉列表控件

 <asp:DropDownList ID="CuisineList" runat="server" Width="100" 
    AutoPostBack = "true" onselectedindexchanged="CuisineList_SelectedIndexChanged" >
 </asp:DropDownList>

在页面加载事件中控制数据绑定:

 protected void Page_Load(object sender, EventArgs e)
 {
    //Load drop down lists for restaurant selection

    BLgetMasterData obj = new BLgetMasterData();

    var cusineList = obj.getCuisines();
    CuisineList.DataSource = cusineList;
    CuisineList.DataBind();
    CuisineList.Items.Insert(0, "Any");

SELECTEDINDEXCHANGEDEVENT:

   protected void CuisineList_SelectedIndexChanged(object sender, EventArgs e)
    {

        if (IsPostBack)
        {
            string def = this.CuisineList.SelectedItem.Value;
            //aLWAYS returns index '0'
        }
    }

【问题讨论】:

  • 你是如何触发事件的?你用的是键盘还是鼠标?信不信由你,我遇到了一种方法有效而另一种方法无效的问题!
  • 绑定的值是什么?如果该值始终为零,则所选项目将是列表中值 = 0 的第一个项目 - 即“任何”。

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


【解决方案1】:

您需要将 Dropdownlist 绑定代码放在 page_load 事件中的 !IsPostBack() 下。喜欢...

protected void Page_Load(object sender, EventArgs e) { 
 if(!IsPostBack)
 {
  BLgetMasterData obj = new BLgetMasterData();

  var cusineList = obj.getCuisines();
  CuisineList.DataSource = cusineList;
  CuisineList.DataBind();
  CuisineList.Items.Insert(0, "Any");
 }
}

原因:每当您的SelectedIndex 更改事件触发时,Page_load 事件在SelectedIndex 更改事件和您的下拉数据rebinded 之前调用,这就是您的currect selection was lost 的原因。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多