Lea*_*sed 14 c# asp.net updatepanel telerik
我有一个注册表单,其中包含3到4个下拉控件和2个日期选择器,现在当选择下拉控件值时(选择索引更改被触发)然后我不希望我的页面回发.
我使用更新面板来阻止这种帖子的行为,如下所示:
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<%--Update Panel for date picker%>
<asp:UpdatePanel ID="UpdatePanelDatepicker" runat="server">
<ContentTemplate>
<telerik:RadDatePicker ID="rdpDate1" runat="server">
</telerik:RadDatePicker>
</ContentTemplate>
</asp:UpdatePanel>
<%--Update Panel for Dropdown--%>
<asp:UpdatePanel ID="updatepaneldata" runat="server">
<ContentTemplate>
<telerik:RadComboBox ID="ddlCountry" runat="server">
</telerik:RadComboBox>
</ContentTemplate>
</asp:UpdatePanel>
</ContentTemplate>
</asp:UpdatePanel>
Run Code Online (Sandbox Code Playgroud)
所以我只是想问这是在更新面板下放置多个控件的正确方法吗?
订阅initializeRequest客户端的ajax事件。在这种情况下,如果需要,我们可以取消 ajax 回发。
在异步请求处理开始之前,会引发initializeRequest 方法。您可以使用此事件取消回发。
在这种情况下,我们将检查是否由于 启动异步回发ddlCountry,如果是,则我们取消 ajax 回发,这样就不会发生回发。
要解决您的问题,只需执行以下操作:将以下 JavaScript 添加到您的 aspx 页面。在下面的代码中,pageLoad当浏览器加载页面时以及加载所有脚本以及创建所有客户端对象后,客户端的 ASP.Net Framework 自动调用该方法。
JavaScript 取消组合框回发
<script type="text/javascript">
function pageLoad()
{
Sys.WebForms.PageRequestManager.getInstance().add_initializeRequest(CancelComboBoxPostback);
}
function CancelComboBoxPostback(sender, args)
{
var prm = Sys.WebForms.PageRequestManager.getInstance();
if (prm.get_isInAsyncPostBack() & args.get_postBackElement().id == 'ddlCountry') {
args.set_cancel(true);
}
}
</script>
Run Code Online (Sandbox Code Playgroud)
以下只是建议,而不是针对您的特定问题的解决方案的一部分:另外,我建议远离,nested update panels因为如果开发人员不知道嵌套更新面板的工作原理,这可能会导致意外结果。在您的情况下,单个更新面板应该足以满足下面的标记,而不是您在原始标记中使用的嵌套更新面板。
没有嵌套更新面板的标记
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<telerik:RadDatePicker ID="rdpDate1" runat="server">
</telerik:RadDatePicker>
<telerik:RadComboBox ID="ddlCountry" runat="server">
</telerik:RadComboBox>
</ContentTemplate>
</asp:UpdatePanel>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1357 次 |
| 最近记录: |