![](/img/trans.png)
[英]Dropdownlist SelectedIndexChanged firing on every postback
[英]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.