UpdatePanel内にデータバインドされていないドロップダウンリストがあります。
<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であるため、デフォルトで「Capacity」が選択されます。「プロジェクト数」に切り替えると、イベントハンドラーが期待どおりに起動し、コードが実行されます。しかし、「Capacity」に戻すと、ハンドラーは起動しません。ポストバックが発生していますが、両方のリストアイテムのイベントハンドラーを具体的にヒットさせたいと思います。
コメントアウトされた「0値」のListItemがそこにあることがわかります。コメントを外すと、「Capacity」と「NumberofProjects」の両方が期待どおりにイベントハンドラーにヒットします。
問題は、ページが読み込まれるときに、[容量]ドロップダウンに関連するデータが読み込まれるため、[容量] ListItemを表示したいのですが、選択するとイベントハンドラーを起動できるようにすることです。
ここで明らかな何かが欠けていますか?
E:DDL_Prerenderイベントのハンドラーを追加し、SelectedIndexを200などに設定して、「Capacity」の選択を解除することを期待しましたが、それも機能しませんでした。
これは事前レンダリングコードです:
protected void CapNumProjectsDDL_PreRender(object sender, EventArgs e)
{
CapNumProjectsDDL.SelectedIndex = 200;
}
これはそれが機能する方法を変えませんでした。