我有两个选择用作国家/地区的下拉列表
一切都按我的预期工作,但是当我回发时,我丢失了上面<select...>的值,保留值的最佳方法是什么,请给我一个示例吗?
<select...>
<asp: Button ID="Button1" runat="server" onclick="Button1_Click" Text="PostBack" />
谢谢。
如果您将ASP.NET与某些jQuery一起使用,则可以在回发中设置隐藏字段的值。然后在$(document).ready()中,您只需从隐藏字段中读取该值。
在后面的代码中:
protected void Button1_Click(object sender, EventArgs e) { this.countryField.Value = "WhateverValueYouWantToPersist"; }
在您的aspx文件中:
$(document).ready(function(){ var persistedValue = <% this.countryField.ClientID %>; // do something... }); <asp:HiddenField runat="server" ID="countryField" />
我想出了一个更好的解决方案。我希望您只想从选择列表中捕获选择的值,而不必保留整个国家/州的集合。
我将这样设置aspx页面:
<asp:DropDownList runat="server" ID="countryField" /> <asp:DropDownList runat="server" ID="stateField" /> <asp:Button runat="server" ID="button1" OnClick="button1_click" OnClientClick="return clientSideClick()" /> <asp:HiddenField runat="server" ID="hiddenCountry" /> <asp:HiddenField runat="server" ID="hiddenState" />
在我的jQuery中,我将具有处理该单击的函数,该函数将捕获所选值并设置隐藏字段的值:
function clientSideClick() { var state = $("#<%= this.stateField.ClientID %> :selected").val(); $("#<%= this.hiddenState.ClientID %>").val(state); var country = $("#<%= this.countryField.ClientID %> :selected").val(); $("#<%= this.hiddenCountry.ClientID %>").val(country); }
然后,在服务器端按钮回发事件中,您可以捕获隐藏状态的值,然后从那里做任何事情:
protected void button1_click(object sender, EventArgs e) { string stateValue = this.hiddenState.Value; string countryValue = this.hiddenCountry.Value; }
如果您确实想重新选择先前选择的“国家/州”对,那么在您的jQuery代码使用ajax例程加载“国家/地区”对之后,先前选择的值仍将位于该隐藏字段中,您可以从那里使用这些值。