我有一個DropDownList
我要監督對選擇的任何變化,所以我認購SelectedIndexChanged
事件,像這樣:的DropDownList - 時的SelectedValue已被設置爲不同的值的SelectedIndexChanged不會觸發代碼隱藏
<asp:DropDownList ID="ddl" runat="server" OnSelectedIndexChanged="ddl_SelectedIndexChanged" DataSource='<%# new string[] { "1", "2", "3" } %>' />
<asp:Button ID="b" runat="server" OnClick="b_Click" Text="Test" />
如果我改變選擇並點擊按鈕,它會跳到我的SelectedIndexChanged
事件中。但是,如果我通過設置DropDownList
的SelectedValue
屬性更改代碼隱藏中的選擇,則不會觸發該事件。這是我後面的代碼來說明這個問題:
protected void Page_Load(object sender, EventArgs e)
{
if (!this.Page.IsPostBack)
{
this.ddl.DataBind();
}
}
protected void b_Click(object sender, EventArgs e)
{
this.ddl.SelectedValue = "2";
}
protected void ddl_SelectedIndexChanged(object sender, EventArgs e)
{
Console.WriteLine("Breakpoint here");
}
我也試圖通過TextChanged
事件作弊,但問題是一樣的。然後我試圖設置DropDownList
的SelectedIndex
屬性,並感到震驚,因爲即使這不起作用。
爲什麼當SelectedValue
或SelectedIndex
在代碼隱藏方面發生變化時,將不會觸發更改事件?
我該如何克服這個問題?
只需在賦值'ddl.ddl_SelectedIndexChanged(null,null)'後執行此操作;它不是自動c – techspider
@techspider謝謝,是的,我知道我可以手動調用任何事件訂閱,但地獄這是骯髒的,它總是需要考慮設置'SelectedValue'時。有沒有更清晰的方法來克服這個問題? – modiX
我試圖使用你的代碼,但你的下拉列表的數據源不起作用。不想循環或手動將它們添加到您的DropDownList.Items? – CurseStacker