我正在使用DropPost按钮,并且AutoPostBack设置为true。我正在尝试将DropDown重置为页面回发时的默认选择-DropDown.SelectedIndex = 0;。 DropDown确实重置为默认选择,但我无法进行选择,因为它在选择另一个选项后会立即连续恢复到默认位置“进行选择”。我不确定是否重要,但这位于更新面板中。
我需要将其重新设置为0的原因之一是,当我单击浏览器上的“后退”按钮时,选择了最后一个选择,并且如果用户尝试返回相同的选择,则将除非刷新页面,否则DropDown无效。例如。选择1将我重定向到page2。如果我单击返回,则选择1仍处于选中状态。如果单击下拉菜单再次选择选项1,则除非刷新页面,否则什么都不会发生。这是我的DropDown HTML:
<asp:DropDownList ID="DropDown" runat="server" EnableViewState="true"
AppendDataBoundItems="true" AutoPostBack="true"
OnSelectedIndexChanged="DropDown_SelectedIndexChanged">
<asp:ListItem>Make a Selection</asp:ListItem>
<asp:ListItem>Choice 1</asp:ListItem>
<asp:ListItem>Choice 2</asp:ListItem>
</asp:DropDownList>
和C#:
if (IsPostBack)
{
DropDown.SelectedIndex = 0;
}
答案 0 :(得分:0)
根据您的体验,我认为当您使用浏览器后退按钮时,正是浏览器才恢复了控制状态。
避免这种行为的一种方法是将autocomplete="off"
添加到<form>
元素中,例如:
<form id="form1" runat="server" autocomplete="off">
...
</form>
如果仅添加autocomplete="off"
还是不够的,还可以通过发送以下标头(例如从Page_Load方法中发送)来告诉浏览器不要缓存页面:
protected void Page_Load(object sender, EventArgs e)
{
Response.Cache.SetNoStore();
Response.Cache.SetCacheability(System.Web.HttpCacheability.NoCache);
}
在尝试此解决方案之前,请记住删除执行DropDown.SelectedIndex = 0;
的行。
答案 1 :(得分:0)
有两个原因:
首先需要删除:
如果(IsPostBack)
{
DropDown.SelectedIndex = 0;
}
启用AutoPostback="true"
后,将调用page_load和OnSelectedIndexChanged
事件,该事件会将SelectedIndex更改为0。
Enable.ViewState
属性设置为true。答案 2 :(得分:0)
请在页面加载中使用以下代码
if (!IsPostBack)
{
DropDown.SelectedIndex = 0;
}