RadAjax не запускается при первом клике после обработчика событий на стороне клиента
Я использую RadAjaxManager для настройки некоторых элементов управления WebForms. Ajax отлично работает во всех сценариях, кроме одного:
У меня есть LinkButton:
<asp:LinkButton ID="lnkSaveButton"
Text="Save"
OnClick="lnkSaveButton_Click"
OnClientClick="if ( ! validateValidation()) return false;"
runat="server" />
validateValidation
функция запускает некоторую проверку страницы на стороне клиента в моих элементах управления формой, которая возвращает false
заблокировать отправку формы, если страница недействительна.
В случае, если Страница недействительна, все элементы управления, на которые RadAjaxManager
не удается запустить их запрос ajax по первому щелчку (только) после завершения проверки.
Любое последующее нажатие на ajaxified элемент управления запускает запрос правильно. Также стоит отметить, что все элементы управления Ajaxified работают правильно после того, как один элемент управления Ajaxified был нажат один раз. Нажатие на любой не-ajaxified элемент управления (не предназначенный для RadAjaxManager) не имеет никакого влияния.
Стоит также отметить, что если я заменю RadAjaxManager
с простым RadAjaxPanel
s Я получаю точно такой же результат, как описано выше.
Что происходит и как мне это исправить?
1 ответ
убедитесь, что вы не добавляете AjaxSettings, которые охватывают элементы управления RadAjaxPanel
убедитесь, что в скрипте нет ошибок, особенно при проверке
попробуйте вызвать ajaxRequsetWithTarget в клиентском обработчике, если проверка прошла успешно, что-то вроде:
<telerik:RadCodeBlock runat="server" ID="RadCodeBlock1"> <script> function validateValidation() { var validatinPassed = true; $find("<%=RadAjaxManager.GetCurrent(Page).ClientID%>").ajaxRequestWithTarget('<%= lnkSaveButton.UniqueID %>', ''); return false; } </script> </telerik:RadCodeBlock> <asp:LinkButton ID="lnkSaveButton" Text="Save" OnClick="lnkSaveButton_Click" OnClientClick="if (! validateValidation()) return false;" runat="server" /> <asp:Label ID="Label1" Text="text" runat="server" /> <telerik:RadAjaxManager ID="RadAjaxManager1" runat="server"> <AjaxSettings> <telerik:AjaxSetting AjaxControlID="lnkSaveButton"> <UpdatedControls> <telerik:AjaxUpdatedControl ControlID="lnkSaveButton" /> <telerik:AjaxUpdatedControl ControlID="Label1" /> </UpdatedControls> </telerik:AjaxSetting> </AjaxSettings> </telerik:RadAjaxManager>
и образец обработчика для тестирования
protected void lnkSaveButton_Click(object sender, EventArgs e) { Label1.Text = DateTime.Now.ToString(); }