gpt4 book ai didi

asp.net - DropDownList - 列表中的第一个项目没有正确回发,但所有其他项目都有效

转载 作者:行者123 更新时间:2023-12-04 23:51:52 27 4
gpt4 key购买 nike

我有这个下拉列表:

<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) 的 Page_Load 中初始选择,默认为“0”。如果我选择 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。

  1. 我已经检查了控件层次结构,所有控件都启用了 View 状态。
  2. 我已尝试明确设置 EnableViewState="true"但没有成功。

有没有人有任何想法,因为我在这方面看到的所有信息都指向 View 状态为假并且在更新面板中 - 在我的情况下,这两者都不是真的。

编辑:我现在将一个虚拟条目作为第一个条目,但这并不理想。

最佳答案

这是预期的行为。

您的事件是 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>

如果你有一个默认的排序顺序,你可以在页面加载时设置它

if (!Page.IsPostBack)
{
ddlSort.Text = 0;
}

关于asp.net - DropDownList - 列表中的第一个项目没有正确回发,但所有其他项目都有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11970650/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com