我使用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
,我会得到与上述完全相同的结果。
发生了什么以及如何解决?
答案 0 :(得分:0)
确保您没有添加包含RadAjaxPanel控件的AjaxSettings
确保不会引发任何脚本错误,尤其是验证
如果验证成功,请尝试在客户端处理程序中调用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();
}