我有一个注册表格,其中包含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>

所以我只想问问这是将多个控件置于更新面板下的正确方法吗?

最佳答案

在客户端订阅initializeRequest的ajax事件。在这种情况下,我们可以根据需要取消ajax回发。



在这种情况下,我们将检查由于ddlCountry是否正在发起异步回发,如果是,则我们取消ajax回发,因此不会发生回发。

要解决您的问题,只需执行以下:将以下JavaScript添加到aspx页面。在下面的代码中,当浏览器加载页面,加载所有脚本以及创建所有客户端对象之后,ASP.Net Framework会在客户端自动调用pageLoad方法。

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>

以下仅是建议,而不是您的特定问题的解决方案的一部分:此外,我建议不要使用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>

关于c# - 将多个控件放入更新面板的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34605384/

10-11 02:04