dropdownlist在页面重新加载时不会重置

时间:2009-03-22 02:46:16

标签: asp.net drop-down-menu reload

嘿,......非常简单的问题

我经常编写php,但恰好是使用ASP.NET 3.0框架进行编程,并且无法弄清楚如何解决这个问题。

我有一个DropdownList,如果我选择了一些值,...我的代码背后会做一堆东西并输出数据......

现在,...如果我重新加载页面(即按下F5或浏览器上的小重载内容)....我的所有数据都会重置,好像我的selectedIndex为0 ....但实际显示的值是我选择的前一个!...我尝试在“if ispostback = false”语句中重置我的代码中的索引...但没有任何作用......它就像值被缓存而没有我可以改变它......

...任何帮助将不胜感激:)

(进一步说明:....如果打印到我的页面加载子屏幕mydropdownlist.selectedIndex ...它将返回0 ....但是屏幕上选定的索引显然不是0。 ...我理解为什么会发生这种情况......我只需要阻止它......或者至少有一种方法可以在视图状态中确定索引......)

安德鲁

6 个答案:

答案 0 :(得分:4)

这是表单字段的正常行为。浏览器通常会尝试记住文本字段的内容,复选框的状态以及页面重新加载和后退/前进等事件下拉列表中的选定项目。

因此,您不应假设在脚本初始化期间,表单字段的值将与您在HTML中提供的内容相匹配。让脚本嗅探当前值并在页面加载时相应地设置其变量和DOM状态。

如果您真的想要在重新加载/导航时丢弃所有用户表单字段更改,请在脚本初始化中调用form.reset()以将其返回到HTML状态。但在正常情况下,这可能对用户不利。

答案 1 :(得分:3)

听起来就像你点击f5时你没有重新加载新页面。你说当你从你的下拉列表中选择一些你做了一堆代码的东西。那个动作是一个回发。因此,在该操作之后点击f5将不会被视为对页面的新调用,因此if(IsPostBack == false)将失败,因为它是回发。

你的第一个动作导致它是一个回发,所以在那之后击中f5,将是一个回发。

听起来你可能也有一些viewstate问题,因为你的其他控件正在重置。虽然如果您使用客户端脚本执行隐藏/显示,但无论如何它们都不会通过视图状态保留。

答案 2 :(得分:1)

如果您不需要,请在复选框上尝试disabling veiwstate

答案 3 :(得分:0)

您是否尝试在浏览器中清除缓存?大多数浏览器支持Control + F5作为硬刷新,它将清除当前页面的缓存并从服务器重新加载整个页面。

答案 4 :(得分:0)

问候, 一旦选择了另一个下拉列表中的值,我也会尝试清除下拉列表。当用户提交表单时,应该只有一个具有值的下拉列表。我已经启动了如下所示的代码,但是当选择了另一个下拉列表中的值时,下拉列表不会自动重置。我确定我错过了一些非常简单的东西,或者我的命名已经关闭。感谢。

enter code

`<%@ Page Language =“C#”AutoEventWireup =“true”CodeFile =“homepagestate.aspx.cs”inherits =“_ homepagestate”%>

< form id="form1" runat="server">

&LT; asp:DropDownList ID =“DropDownList1”runat =“server”AutoPostBack =“true”OnSelectedIndexChanged =“sel”&gt;             &LT; asp:ListItem Value =“ - 选择一个或多个状态 - ”&gt;&lt; / ASP:的ListItem&GT;             &LT; asp:ListItem Value =“ALABAMA”&gt;&lt; / ASP:的ListItem&GT;

    < /asp:DropDownList>

&LT; asp:DropDownList ID =“DropDownList2”runat =“server”AutoPostBack =“true”&gt;           &LT; asp:ListItem Value =“ - Select One - ”&gt;&lt; / ASP:的ListItem&GT;           &LT; / ASP:DropDownList的&GT;

      < asp:Button ID="Button1" runat="server" Text="Submit" /></div>
</form>

使用System;

使用System.Data;

使用System.Configuration;

使用System.Collections;

使用System.Web;

使用System.Web.Security;

使用System.Web.UI;

使用System.Web.UI.WebControls;

使用System.Web.UI.WebControls.WebParts;

使用System.Web.UI.HtmlControls;

public partial class _homepagestate:System.Web.UI.Page

{

protected void Page_Load(object sender, EventArgs e)

{

    if ( !IsPostBack )

    {

       // sel();

        DropDownList2.SelectedIndex = 0;

    }

}

protected void sel(object sender, EventArgs e)

{

    Response.Write(DropDownList2.SelectedIndex);

    //DropDownList2.selecteditem = 0;

}

}

答案 5 :(得分:0)

这实际上是来自parrkid的另一个stackoverflow问题,但是在页面的末尾添加了这个:

<script language="javascript">
  var B01 = document.getElementById('<%=YourDropDownList.ClientID%>');
  B01.selectedIndex = 0;
</script>

是的......完全破解了什么可能是asp.net但恕我直言:-P