ASP.NET AjaxControlToolkit CascadingDropdown暂停autopostback

时间:2015-10-29 00:19:55

标签: jquery asp.net ajaxcontroltoolkit autopostback

使用ASP.NET AjaxControltoolkit CascadingDropDown(v15.1.4),我有多个下拉列表(为了这个问题的简单,有两个下拉列表)

<!-- Top Level -->
<asp:DropDownList runat="server" ClientIDMode="Static" ID="drp_level1" AutoPostBack="true"></asp:DropDownList>

<!-- Second Level -->
<asp:DropDownList runat="server" ClientIDMode="Static" ID="drp_level2" AutoPostBack="true"></asp:DropDownList>
<ajaxToolkit:CascadingDropDown ID="casc_l2" ClientIDMode="Static" runat="server" Category="x" ParentControlID="drp_level1" TargetControlID="drp_level2" ServicePath="~/method.asmx" ServiceMethod="x" />

这种方法的问题在于级联下拉列表正在更新级别2的内容(正确),但随后又触发了另一个回发(重新加载页面,然后级联重新运行,触发另一个回发等等)上。

为清晰起见而更新:下拉列表均用作过滤器...

  • 该页面最初会显示未过滤数据列表
  • 下拉列表1可能包含大陆列表
  • 下拉列表2可能包含国家/地区列表(取决于level1选项)
  • 下拉列表3及更高版本可能会显示其他内容(取决于非洲大陆)
  • 可以单独选择每个下拉列表以进一步过滤数据[即时回发导致数据刷新],但下拉列表2及更高版本的内容将取决于在level1中选择的“分组”。

我尝试了什么(失败了)

<script lang="javascript" type="text/javascript">
  Sys.Application.add_load(initializePage);

  function initializePage() {
    $find('casc_l2').add_populating(stop_auto);
    $find('casc_l2').add_populated(start_auto);
  }

  function stop_auto(sender, e) {
    $find('drp_level2').set_autopostback(false);
  }
  function start_auto(sender, e) {
    $find('drp_level2').set_autopostback(true);
  }
</script>

解决方法: - 我可以禁用自动回发并强制用户手动点击按钮重新提交..但这很麻烦。

我想要的是下拉列表的“用户选择”导致回发,但是对于下拉列表的“级联重新填充”不是。

0 个答案:

没有答案