我有一个非常正常的 ASP.NET 下拉列表的问题。
我在页面中有一个下拉列表 AutoPostback=false
.
以及生成下拉列表内容的代码:
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
this.dropDownList.Items.Add(new ListItem("text1", "value1"));
this.dropDownList.Items.Add(new ListItem("text2", "value2"));
this.dropDownList.SelectedIndex = 0;
}
}
我希望下拉列表现在会选择默认项目
index = 0
,但选中的项目仍然是项目“text2”——我选择的项目。在这种情况下,this.dropDownList.SelectedIndex = 0;
不起作用。我完全不明白。有人可以帮助我吗?
更新:此行为仅在 Firefox 中发生,在 Chrome/IE 中不会发生。
最佳答案
您似乎误解了回发的含义;这并不意味着只是页面刷新。当你在浏览器中按 F5 时,原始请求将被发送到服务器,并且 Page.IsPostBack
会是假的。
如果您想进行实际回发,请添加 asp:Button
服务器控件到页面并单击它(或者只是在 DropDownList 上设置 AutoPostBack=true
)。
Firefox 似乎正在执行某种客户端缓存,因此当您按 F5 时,它不会再次往返服务器。您可以通过重置 select
来解决此问题。页面加载时的元素。
<script type='text/javascript'>
document.getElementById('<%= dropDownList.ClientID %>').selectedIndex = 0;
</script>
(注意:将其放在页面底部,以便在文档加载后执行。)
关于asp.net - 下拉列表 selectedindex 在页面刷新时不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12311520/