У меня есть простая форма (текстовое поле, кнопка отправки), которая обернута в панель обновлений.
<asp:UpdatePanel ID="ReplyUpdatePanel" UpdateMode="Conditional" runat="server">
<ContentTemplate>
<asp:Textbox id="ReplyTextBox" runat="server"/>
<asp:Button id="SubmitButton" OnClick="SubmitButton_Click" runat="server"/>
<ContentTemplate>
</asp:UpdatePanel>
Итак, когда я нажимаю кнопку, запускается событие щелчка на стороне сервера (SubmitButton_Click)что-то происходит с БД, и страница перерисовывается (асинхронно).
Вот моя проблема - мне нужно выполнить некоторый JavaScript после того, как все "вещи случатся с БД".
Другими словами, мне нужно создать JavaScript, данные / параметры которого основаны на логике на стороне сервера.
Я пробовал это:
Page.RegisterStartupScript
и это
ScriptManager.RegisterStartupScript
Ничего не работает (ничего не происходит).
Теперь я могу подключиться к функции .add_pageLoaded
с помощью клиентской библиотеки AJAX (для выполнения клиентских сценариев после завершения частичного обновления)., но проблема в том, что мне нужны данные с сервера, который создается по событию нажатия кнопки.
Т.е.:
Sys.Application.add_init(function () {
Sys.WebForms.PageRequestManager.getInstance().add_pageLoaded(function (sender, args) {
var panels = args.get_panelsUpdated();
for (var i = 0; i < panels.length; i++) {
// check panels[i].id and do something
}
});
});
Единственный "взлом", о котором я могу думать в данный момент, эточтобы сделать вышеупомянутое, но позвоните в веб-службу, снова получите все данные ивыполнение моего сценария.Я говорю «взломать», потому что мне не нужно выполнять асинхронную обратную передачу, подключиться к обработчику событий после частичной обратной передачи, а затем снова вызвать сервер, чтобы получить информацию, которая была ранее опубликована.
Похоже на обычнуюпроблема.И нет, я не могу удалить UpdatePanel (хотя я бы с удовольствием), не хочу тратить время на споры, почему.
Есть какие-нибудь нехарактерные идеи?
РЕДАКТИРОВАТЬ
Уточнение данных, которые мне нужно отправить в скрипт:
Я набираю некоторыетекст в текстовом поле, нажмите кнопку Отправить, затем сервер создает запись базы данных и возвращает объект, который имеет свойства, такие как идентификатор, имя, URL, Blah и т. д. Это значения, которые требуются сценарию.
Поэтому, если бы я должен был вызывать веб-сервис из клиентского кода, чтобы получить только что созданные значения, мне нужно было бы сделать несколько хаков (получить последнюю измененную запись, которая имеет значениетекстовое окно).Не идеально, и два AJAX не требуют одного сообщения формы.(обновить обратную передачу панели, затем вызов веб-службы).