Asp.net DropDownList-列表中的第一项未正确发回,但所有其他项都正常工作
我有一个下拉列表:Asp.net DropDownList-列表中的第一项未正确发回,但所有其他项都正常工作,asp.net,drop-down-menu,Asp.net,Drop Down Menu,我有一个下拉列表: <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">S
<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>
然后,在选择任何其他选项后,选择“按相关性排序”将正常工作,但选择第一个选项不会正常工作(如第一个示例所示)
我正在使用ASP.NET2.0
编辑:目前我已将一个虚拟条目作为第一个条目输入,但这并不理想。这是预期的行为 您的事件是
OnSelectedIndexChanged
,如果打开下拉列表并选择已选择的选项,asp.net将不会将其检测为更改
只有在选择不同的值时,才会触发OnSelectedIndexChanged
我建议设置一个默认值,就像在第二个示例中一样,只是更具可读性:
<asp:DropDownList id="ddlSort" runat="server" EnableViewState="true" OnSelectedIndexChanged="ApplyFilters" AutoPostBack="True">
<asp:ListItem Value="-1">Select Sort order</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>
ViewStateMode=在下拉列表中启用或在web中启用ViewStateMode。配置恐怕您描述的代码是完全标准的。你是否调试过以查看是否检测到错误?@MMK-你读了我文章的最后2点了吗?@ClaudioRedi-我不确定要调试什么。页面发回,但不调用ApplyFilter。中间部分似乎被打破了,我认为你不能正确地阅读我的文章。我说-我选择了其他东西,然后再次选择选项1,它不会调用ApplyFilter。我不应该有一个伪造的条目作为第一个条目来修复这个问题。该值是根据Url中的一个值选择的,该值“应该”在ApplyFilters中设置。您是说,在您的第一次选择时,它会调用
ApplyFilters
,而当您选择第一个选项时,它不会?这似乎不太可能,我就是这么说的。如果选择了其他任何一个选项,则在选择该选项并重新选择第一个选项后,它不会调用ApplyFilter(但会回发)。
<asp:DropDownList id="ddlSort" runat="server" EnableViewState="true" OnSelectedIndexChanged="ApplyFilters" AutoPostBack="True">
<asp:ListItem Value="-1">Select Sort order</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>
if (!Page.IsPostBack)
{
ddlSort.Text = 0;
}