jquery UI Dialog и __DoPostback - PullRequest
       17

jquery UI Dialog и __DoPostback

1 голос
/ 16 декабря 2008

У меня проблема с диалоговым окном jQuery-UI в форме ASP.NET:

$("#pnlReceiverDialog").dialog({
  autoOpen:false, 
  modal: true,
  height:220, 
  width:500,
  resizable :false,
  overlay: {  opacity: 0.5,background: "black" },
  buttons: {
    "Cancel": function() { 
      $(this).dialog("close");
    },
    "Ok": function() {
      __doPostBack('ctl00$phContent$ctl00$LetterLocation$pupNewReceiver','')
    }
  }
});

pnlReceiverDialog содержит ASP.NET TextBox.

Когда я нажимаю кнопку ОК, форма отправляется обратно, но текстовое поле не имеет значения.

Ответы [ 6 ]

4 голосов
/ 27 марта 2009

Диалог jQuery перемещает поле за пределы , поэтому вы не видите значение при обратной передаче.

У вас есть два варианта:

  1. Добавить код для перемещения диалогового элемента div обратно в форму перед вызовом __doPostBack - вы можете использовать что-то вроде $ ("form") [0] .appendChild ($ ("div.yourdivdialog input: first") [0]); для этого.
  2. Добавьте скрытое поле в форму (но не в div диалогового окна) и добавьте код для копирования диалоговых полей в скрытое поле перед __doPostBack.
2 голосов
/ 19 декабря 2008

Я знаю, что вы, вероятно, уже проверили, что имя объекта является тем, которое вы написали (ctl00 $ phContent $ ctl00 $ LetterLocation $ pupNewReceiver), но первое, что я хотел бы сделать, это проверить его дважды или трижды ...

Однажды я провел почти день в аналогичной ситуации, когда единственное, что было неправильно, было имя объекта, потому что существовала разница между идентификатором объекта client и именем объекта client.

Проверьте коллекцию Request.Params, чтобы убедиться, что имя верно.

Вы также можете использовать второй параметр функции __doPostBack, чтобы указать значение, которое вы хотите отправить

Вот пример того, что я обычно делаю:

__ doPostBack ($ ("# <% = Me.btnDeleteItem.ClientID%>"). Attr ("name"), $ ("# <% = txtId.ClientID%>"). Val ());

0 голосов
/ 16 ноября 2010

Я считаю, что текстовое поле не имеет значения, потому что оно заканчивается за пределами формы.

Попробуйте использовать следующий код для добавления модальной формы:

$("#ModalId").parent().appendTo(jQuery("form:first"));
0 голосов
/ 22 января 2009

Это только для чтения или отключенное или скрытое текстовое поле? ASP.NET не отправляет значение обратно, если текстовое поле доступно только для чтения, отключено или скрыто.

0 голосов
/ 22 января 2009

Я не могу ответить на конкретный вопрос. Однако я настоятельно рекомендую изменить код для использования asp.net для вставки идентификатора объекта, как это сделал vitorsilva, т.е. <% = TEST.ClientID%>, где TEST - это идентификатор ASP.Net вашего текстового поля или что-то еще. Фактический идентификатор объекта, отправленный в браузер (например, ctl00 $ phContent $ ctl00 $ LetterLocation $ pupNewReceiver в вашем примере) может измениться, если вы измените структуру страницы. Используя метод ClientID, вы всегда получите правильный ID.

0 голосов
/ 20 декабря 2008

JQuery Script, инкапсулированный в пользовательский элемент управления ASP.Net Page.ClientScript.GetPostBackEventReference (это, ""). pnlReceiverDialog - это DIV вне элемента управления.

Я проверил Request.Params, значение TextBox не существует.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...