在客户端上复制AJAX Control Toolkit CascadingDropDown

时间:2014-08-18 11:05:13

标签: javascript jquery asp.net ajaxcontroltoolkit cascadingdropdown

我想通过javascript(jQuery)在客户端复制级联下拉列表。

Cascading Drowndown lists

您可以在第一个框中看到要复制的级联下拉列表。它们将使用AJAX Control Toolkit的CascadingDropDown控件在ASP.NET中呈现。这非常有效。

当您点击"添加其他类别"将复制firstbox的所有下拉列表。 (见第二个方框)

这是此操作的单击脚本(使用jQuery的clone()):

categoryRow.clone(true, true).insertBefore(containerRow);
subCategory1Row.clone(true, true).insertBefore(containerRow);
subCategory2Row.clone(true, true).insertBefore(containerRow);
subCategory3Row.clone(true, true).insertBefore(containerRow);

clone()函数还复制CascadingDropDown控件的隐藏ClientState字段。

不幸的是,复制的CascadingDropDownLists的级联功能不起作用。

如何才能最好地创建/复制级联的drodwownlists?或者您有其他想法/更好的方法来做到这一点吗?

1 个答案:

答案 0 :(得分:1)

“不幸的是,复制的CascadingDropDownLists的级联功能不起作用”

这是因为原始元素也在事件监听器中注册了...复制的元素确实被复制了,但没有那些监听器。

你怎么检查它?在任何现代浏览器中(我都喜欢使用chrome),您可以在输入开发工具时查看HTML页面的元素(点击F12以启用它)。每个元素都有一个活动监听器的映射。

element with event listeners shown in chrome development tools

简而言之:找到用于在原始元素第一个地方中定义事件的函数 - 然后使用此函数注册新复制的元素。

一定要确保不要再登记原始元素 。这将导致每个事件为每个元素激发几次。