私はこのDropDownListを持っています:
<asp:DropDownList id="ddlSort" runat="server" EnableViewState="true" OnSelectedIndexChanged="ApplyFilters" AutoPostBack="True">
<asp:ListItem Value="0">Sort By Relevancy</asp:listitem>
<asp:ListItem Value="1">Sort By Product Code</asp:listitem>
<asp:ListItem Value="2">Sort By Product Description</asp:listitem>
<asp:ListItem Value="3">Sort By Price - Lowest</asp:listitem>
<asp:ListItem Value="4">Sort By Price - Highest</asp:listitem>
</asp:dropdownlist>
if (!Page.IsPostBack)
デフォルトが「0」のPage_Loadで最初に選択されるようにオプションを設定しています。Sort By Product Code
(またはその他のオプション)を選択するとApplyFilters
、問題なく呼び出されます。次に、ドロップダウンを最初のオプションに変更すると、AutoPostBack が起動されますが、ApplyFilters
コードには入りません。
マークアップを次のように変更すると:
<asp:DropDownList id="ddlSort" runat="server" EnableViewState="true" OnSelectedIndexChanged="ApplyFilters" AutoPostBack="True">
<asp:ListItem Value="-1">First Option</asp:listitem>
<asp:ListItem Value="0">Sort By Relevancy</asp:listitem>
<asp:ListItem Value="1">Sort By Product Code</asp:listitem>
<asp:ListItem Value="2">Sort By Product Description</asp:listitem>
<asp:ListItem Value="3">Sort By Price - Lowest</asp:listitem>
<asp:ListItem Value="4">Sort By Price - Highest</asp:listitem>
</asp:dropdownlist>
次に、他のオプションを選択した後に [関連性で並べ替え] を選択すると正しく機能しますが、[最初のオプション] を選択すると機能しません (最初の例のように)。
ASP.NET 2.0 を使用しています。
- コントロール階層を確認したところ、すべてのコントロールでビュー ステートが有効になっています。
- EnableViewState="true" を明示的に設定しようとしましたが、成功しませんでした。
これについて私が見たすべての情報は、ビューステートがfalseであり、更新パネルにあることを示しているので、誰にもアイデアはありますか?私の場合、どちらも当てはまりません。
編集: 最初のエントリとして今のところダミーのエントリを入れましたが、これは理想的ではありません。