【问题标题】:ASP.NET DropdownList autopostback and Browser Back ButtonASP.NET DropdownList 自动回发和浏览器后退按钮
【发布时间】:2010-11-17 04:13:17
【问题描述】:

我有一个启用了自动回发的 asp.net 下拉列表。它不是动态填充的,它的值在 HTML 代码中是固定的:

<asp:dropdownlist id="ddlReportView" runat="server" autopostback="True" onselectedindexchanged="ddlReportView_SelectedIndexChanged" enableviewstate="true">
    <asp:listitem  text="Snapshot" value="SNAPSHOT"></asp:listitem>
    <asp:listitem  text="Detailled" value="DETAILLED"></asp:listitem>
    <asp:listitem  text="Review" value="REVIEW"></asp:listitem>
    <asp:listitem  text="Review Summary" value="REVIEW_SUMMARY"></asp:listitem>

</asp:dropdownlist>

如果我选择一个项目,它会重新加载页面以显示具有不同格式的列表。我的问题是当我点击后退浏览器按钮时,下拉列表的值仍然是最后选择的值。

示例:

起初列表处于快照模式: alt text http://img44.imageshack.us/img44/3749/37948756.png

然后用户点击 Review Summary 模式: alt text http://img36.imageshack.us/img36/545/96184426.png

页面现在显示评论摘要网格,一切正常: alt text http://img17.imageshack.us/img17/8239/13194229.png

用户按下后退按钮,网格以快照模式显示(可以),但是 下拉菜单仍然显示“评论摘要”! alt text http://img190.imageshack.us/img190/6747/22053199.png

我尝试使用 javascript 设置选择的值,但它不起作用。有没有人遇到过这个问题,或者知道如何解决这个问题?

谢谢。

【问题讨论】:

  • 您是如何尝试使用 JS 更改选择值的?
  • 你的下拉菜单在 AJAX 更新面板中吗?
  • javascript: - 在隐藏的文本框中写入选定的索引值,然后在表单加载 Ajax 上设置 ddl 的选定索引:-否

标签: c# .net asp.net javascript html


【解决方案1】:

我设法让 javascript 使用 jQuery 处理这个...

$(document).ready(function() {
    //Reset drop down list
    $("#<%= dropDownList1.ClientID %> > option:first").attr("selected", "selected");        
});

或者如果初始值应该是 'SNAPSHOT' 选项...

$(document).ready(function() {
    $("#<%= dropDownList1.ClientID %>").val("SNAPSHOT");
});

【讨论】:

    【解决方案2】:

    试试这个。我看到没有人回答你的问题,所以这是我的镜头。

    在页面上创建一个表单,我们将其命名为 frm1。

    onload 在 body 中做一个类似这样的函数。

    function checkrefresh()
        {
            if(frm1.visited.value == '' || frm1.visited.value == null) 
            {
                document.frm1.visited.value = "1";
            }
            else
            {
               document.getElementById('<%=ddlReportView.ClientId%>').selectedvalue='SNAPSHOT';
            }
        } 
    

    让我知道这是否有效。

    【讨论】:

    • nopes...尝试了类似的技巧,但由于某种原因 ddl 拒绝更改值...
    【解决方案3】:

    在您的 .aspxs 的标头中关闭 SmartNavigation 属性(或者在 web.configs 中,该属性是可继承的,因此如果您将其放在根目录中,它将对您的整个站点生效)

    【讨论】:

      【解决方案4】:

      您可以处理浏览器的后退按钮点击

      $(函数(){ jQuery(window).bind("卸载", function () { $("#").val('0'); }); });

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-08-13
        • 1970-01-01
        • 2017-06-29
        • 2010-09-14
        • 2013-03-02
        • 1970-01-01
        相关资源
        最近更新 更多