5

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

我通常编写 php,但碰巧现在正在使用 ASP.NET 3.0 框架进行编程,但不知道如何解决这个问题。

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

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

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

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

安德鲁

4

6 回答 6

4

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

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

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

于 2009-03-22T02:53:08.627 回答
3

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

您的第一个操作导致它成为回发,因此在此之后按 f5 将成为回发。

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

于 2009-03-22T05:18:34.487 回答
1

如果不需要,请尝试禁用复选框上的 veiwstate 。

于 2009-03-22T02:55:00.947 回答
0

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

于 2009-03-22T02:49:34.313 回答
0

问候,一旦选择了另一个下拉列表中的值,我也试图清除下拉列表。当用户提交表单时,应该只有一个具有值的下拉列表。I have started the code as shown below but the drop-down will not reset itself when a value from the other drop-down is selected. 我确定我遗漏了一些非常简单的东西,或者我的命名已关闭。谢谢。

enter code

`<%@ Page Language="C#" AutoEventWireup="true" CodeFile="homepagestate.aspx.cs" 继承="_homepagestate"%>

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

<asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="true" OnSelectedIndexChanged="sel"> <asp:ListItem Value="-选择一个或多个状态-"></asp:ListItem> <asp: ListItem Value="ALABAMA"></asp:ListItem>

    < /asp:DropDownList>

<asp:DropDownList ID="DropDownList2" runat="server" AutoPostBack="true"> <asp:ListItem Value="-Select One-"></asp:ListItem> </asp:DropDownList>

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

使用系统;

使用 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;

公共部分类_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;

}

}

'

于 2009-06-24T18:05:30.997 回答
0

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

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

是的...对于可能是 asp.net 但恕我直言的总黑客攻击 :-P

于 2011-11-03T15:48:57.027 回答