【问题标题】:ASP.NET - Keeping the state of the selected value of the dropdown after refreshing the page without using viewstate and autopostbackASP.NET - 在不使用视图状态和自动回发的情况下刷新页面后保持下拉列表的选定值的状态
【发布时间】:2013-07-30 08:36:18
【问题描述】:

我正在使用 ASP.NET 下拉框,并且已将 javascript 函数连接到“OnChange”事件。

该函数实际上将控件重定向回服务器中的页面加载函数,并刷新页面。我不应该将自动回发属性设置为 true。

我想确保在页面刷新后下拉菜单中包含选定的值。

我应该使用任何隐藏变量还是 asp.net 中有一个属性可以帮助我实现这一点?

任何帮助将不胜感激。谢谢

我的代码看起来像这样..

<asp:DropDownList ID="CountriesDropDown" Width="100" runat="server" OnChange = "Send(this);"/>

function Send(dropdown)
{
//Should I write any code here ? 
refreshpage(); //separately implemented to redirect the url back to server
}

In server side

PageLoad()
{
CountriesDropDown.DataSource = CountriesList;
ContriesDropDown.DataBind();

//are there any properties that I could use so that the drop-down retains the selected value ?


}

【问题讨论】:

    标签: javascript jquery html asp.net webforms


    【解决方案1】:

    取决于您刷新页面的方式:

    • GET : 您必须将所选值添加到您的 URL 参数中
    • POST :您应该使用隐藏字段并在 Request.Params[yourHiddenField.UniqueID] 中取回其值

    在绑定下拉列表后执行此操作。

    【讨论】:

      【解决方案2】:

      我应该使用任何隐藏变量还是在 asp.net 中有一个属性 这可以帮助我实现这一目标吗?

      是的。 Viewstate 在 ASP.Net 中可以帮助您实现这一目标。但是,你不想使用它!

      您现在可以做的是在您的函数refreshpageonchange 处理程序中附加一个包含所选选项的查询字符串:

      function Send($dropdown) {
          //Should I write any code here ? 
          refreshpage(dropdown); //separately implemented to redirect the url back to server
      }
      
      function refreshpage($dropdown) {
          window.location = "MyPage.aspx?value=" + $dropdown.val();
      }
      

      现在在您的页面加载代码隐藏中,首先检查一个名为“value”的查询字符串参数是否可用。如果是,则在数据绑定后将此设置为您选择的值。

      MyAspDropDown.DataBind()
      MyAspDropDown.SelectedValue = Request.Querystring("value")
      

      【讨论】:

      • 这正是我最近一直在尝试做的。非常感谢。真的很有帮助。将保持更新..
      • @Jundev - 很高兴为您提供帮助。如果它解决了您的问题,请将答案标记为已接受。谢谢。
      • 抱歉,您的代码不起作用。我尝试了您之前编写的 javascript 和您现在编写的 jquery 方法。我还在努力。我想我必须使用 $(select#dropdownID).val()..不确定..如果您找到正确的方法,请告诉我。谢谢
      • 当然。你到底在哪里面临问题? ASP.Net '<%= ddlAspId.ClientID %>' 或在您的页面声明中添加ClientIDMode="Static"。然后你可以使用$('#ddlAspId').val()
      • 我已经整理好了。我使用了 Onchange ="send(this.value)" 并将函数编写为 send(selected) { window.location = "" + selected;}...它现在可以工作了。感谢您的帮助。
      【解决方案3】:

      尝试使用更新面板控件。

      请查看http://msdn.microsoft.com/en-us/library/bb399001(v=vs.100).aspx

      【讨论】:

      • UpdatePanel 控件在页面中增加了大量的复杂性(特别是如果它们有很多),不应该用于这种微不足道的事情。
      猜你喜欢
      • 2015-10-27
      • 1970-01-01
      • 2021-11-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-15
      • 2019-05-19
      相关资源
      最近更新 更多