簡體   English   中英

DropDownList不會在SelectedIndexChanged上回發

[英]DropDownList does not postback on SelectedIndexChanged

更改所選項目時,我嘗試將DropDownList設置為AutoPostBack。 我對這為什么不起作用有些瘋狂。

有人有任何快速的想法嗎?請幫助

這是代碼:-

 <asp:DropDownList ID="ddl_username" runat="server"
   AutoPostBack="True" 
   onselectedindexchanged="ddl_username_SelectedIndexChanged" 
  DataTextField="Shortname" DataValueField="ID">
  </asp:DropDownList>`



  protected void Page_Load(object sender, EventArgs e)
  {
    if (!IsPostBack)
    {
        Bind_Users();
    }
  }

 private DataSet Bind_Users()
 {
    DataSet ds;
    ds = cs.BindUsers();
    if (ds.Tables[0] != null)
    {
        if (ds.Tables[0].Rows.Count > 0)
        {
            ddl_username.DataSource = ds.Tables[0];
            ddl_username.DataTextField = "Shortname";
            ddl_username.DataValueField = "ID";
            ddl_username.DataBind();
            ListItem li = new ListItem();
            li.Text = "Select";
            li.Value = "-1";
            ddl_username.Items.Insert(0, li);
            ddl_username.SelectedIndex = 0;
        }
        //ddl_username.SelectedIndex = 0;
        //ddl_username.Text = "-----Select-----";
    }
    return ds;
}

您是否檢查過重新發布后是否再次發生了ddl的初始加載? 只要將調試斷點放在您的selected-index-changed方法中,將一個調試斷點放在oninit / page-load方法中,就可以將數據加載到ddl。 如果在觸發您的事件之前再次加載-您需要放置一個

if(!IsPostBack)

加載方法之前-如:

if(!IsPostBack)
  this.MyDDL.DataSource = GetDatasourceForMyDDL();

頁面每次回發時都會調用Page_Load ,因此您必須將Bind_Users()放在

if(!IsPostBack)塊,因為在ddl_username_SelectedIndexChanged之前ddl_username_SelectedIndexChanged Page_Load

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM