Есть ли способ держать значения? - потерял в обратной передаче - PullRequest
0 голосов
/ 19 апреля 2010

У меня есть два выбора, используя в качестве выпадающего списка для страны / штата

все работает, как я ожидал, но когда я выполняю обратную передачу, я теряю значения из вышеприведенного <select...>, каков наилучший способ сохранить значения, и не могли бы вы показать мне пример, пожалуйста?

<asp: Button ID="Button1" runat="server" 
onclick="Button1_Click" Text="PostBack" />

спасибо.

Ответы [ 2 ]

2 голосов
/ 20 апреля 2010

Если вы используете 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, ранее выбранные значения все еще будут в этом скрытом поле, и вы можете использовать значения оттуда.

1 голос
/ 19 апреля 2010

У вас есть несколько вариантов:

  • Вы можете сделать что-то вроде 'ajax post', чтобы вся страница не обновлялась.
  • Вы могли бы вернуть выбранные данные обратнос сервера.
  • Вы можете сохранить выбранные данные в файле cookie.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...