我有一個非數據綁定DROPDOWNLIST一個UpdatePanel內:ASP:DROPDOWNLIST OnSelectedIndexChanged事件不觸發
<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。當我關閉「項目數量」時,事件處理程序按預期觸發,執行代碼。但是當我切換回「容量」時,處理程序不會觸發。 Postback正在發生,但我希望它能夠特別擊中兩個列表項上的事件處理程序。
你可以看到我有一個註釋掉的「0值」ListItem。當我取消註釋時,「容量」和「項目數」將按預期擊中事件處理程序。
問題是,當頁面加載時,它將加載與「容量」下拉相關的數據,所以我希望顯示「容量」ListItem,但能夠在選定時觸發事件處理程序。
我在這裏錯過了一些明顯的東西嗎? E:我試着爲DDL_Prerender事件添加一個處理程序,將SelectedIndex設置爲200或者明顯不在列表中,希望它會取消選擇「容量」,但這也不起作用。
這是預渲染代碼:
protected void CapNumProjectsDDL_PreRender(object sender, EventArgs e)
{
CapNumProjectsDDL.SelectedIndex = 200;
}
這並沒有改變它的工作方式。
當我拿出**的OnPreRender =「CapNumProjectsDDL_PreRender」 **(沒有代碼),它的工作原理。你可以發佈** CapNumProjectsDDL_PreRender **的代碼嗎? – SBurris
這個問題似乎是,你不提供代碼。我想簡單地使用您的標記,一切工作(當你從容量和項目數,反之亦然切換ApplyFilters事件處理函數)。 –
當然,我會更新我的帖子。 – RockiesMagicNumber