![](/img/trans.png)
[英]DropDownList's OnSelectedIndexChanged event is not firing
[英]ASP:Dropdownlist OnSelectedIndexChanged Event Not Firing
我在UpdatePanel中有一個非數據綁定的Dropdownlist:
<asp:UpdatePanel runat="server" ID="FiltersUpdPnl">
<ContentTemplate>
<div class="filters">
<asp:Button runat="server" ID="ExportBtn" Text="Export Map to Image" />
<br />
Show:
<asp:DropDownList runat="server" ID="CapNumProjectsDDL" AutoPostBack="true" OnSelectedIndexChanged="ApplyFilters" OnPreRender="CapNumProjectsDDL_PreRender">
<%--<asp:ListItem Value="0" Text="" Selected="True"></asp:ListItem>--%>
<asp:ListItem Value="1" Text="Capacity"></asp:ListItem>
<asp:ListItem Value="2" Text="Number of Projects"></asp:ListItem>
</asp:DropDownList>
</div>
</ContentTemplate>
</asp:UpdatePanel>
事件處理程序並不十分重要,它只是做一些事情:
protected void ApplyFilters(object sender, EventArgs e)
{
//Do Stuff relating to the selected Value
}
頁面加載時,默認情況下會選擇“容量”,因為它是第一個ListItem。 當我關閉“項目數”時,事件處理程序將按預期觸發,執行代碼。 但是,當我切換回“容量”時,處理程序不會觸發。 回發正在發生,但我希望它專門擊中兩個列表項上的事件處理程序。
您可以看到我那里有一個注釋掉的“ 0值” ListItem。 當我取消評論時,“容量”和“項目數”都會按預期到達事件處理程序。
問題是頁面加載時,它正在加載與“ Capacity”下拉列表相關的數據,因此我希望顯示“ Capacity” ListItem,但能夠在選中時觸發事件處理程序。
我在這里錯過明顯的東西嗎?
E:我嘗試為DDL_Prerender事件添加一個處理程序,將SelectedIndex設置為200或明顯不在列表中的內容,希望它會取消選擇“ Capacity”,但這也不起作用。
這是預渲染代碼:
protected void CapNumProjectsDDL_PreRender(object sender, EventArgs e)
{
CapNumProjectsDDL.SelectedIndex = 200;
}
這並沒有改變它的工作方式。
即使您在下拉框中已經選擇的項目中進行選擇,您似乎也希望該下拉元素提高更改。 我相信這將行不通,並且問題的原因不在服務器端asp.net dropdownlist控件中,而是在HTML select元素如何工作(對DropDownList控件進行呈現)中。
問題是,如果用戶選擇與顯示下拉框之前相同的項目,則HTML select元素不會觸發更改事件(因為從控件狀態的角度來看,它沒有更改)。
因此,我相信可以實現您想要的行為,但是您不應該使用HTML選擇控件,而應該實現自定義解決方案。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.