簡體   English   中英

ASP:Dropdownlist OnSelectedIndexChanged事件未觸發

[英]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.

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