2010-08-03 37 views
2

我可以使用jQuery改变CascadingDropDown的价值,但是这会导致目标控件的子下拉列表填充数据永远不会发生的火灾事件:jQuery的变化值AJAX CascadingDropDown

$("#<%= ddlFromCompetition.ClientID %>").change(function() { 
    var fromValue = $("#<%= ddlFromCompetition.ClientID %>").val(); 
    $("#<%= ddlToCompetition.ClientID %>").val(fromValue); // causes value to change, but child doesn't update 
}); 

要清楚,ddlFromCompetitionddlToCompetition不是父母/子女。这是ddlToCompetition的孩子不使用上述代码更新。使用鼠标选择ddlToCompetition时,其子级下拉更新按预期更新。

我试着打电话$("#<%= ddlToCompetition.ClientID %>").change()试图强制事件发生,但它不起作用。

回答

0

您需要的触发()事件

$("#<%= ddlToCompetition.ClientID %>").trigger('change'); 

JQuery的文档:http://api.jquery.com/trigger/

而且,因为在ddlFromCompetition的背景下ddlFromCompetition火灾第一改变事件处理程序,你应该能够改变。 ..

var fromValue = $("#<%= ddlFromCompetition.ClientID %>").val(); 

到...

var fromValue = $(this).val(); 
+0

$(this).val()工作(选定的值更改)但不触发('更改')。对于ASP.NET AJAX CascadingDropDown行为必定存在一些特殊情况,以及它触发哪个事件,导致它仅使用鼠标响应手动更改事件。 – 2010-08-03 15:52:43

+0

你试过triggerHandler('改变')吗?值得一试。 – 2010-08-03 16:07:05

+0

没有工作。我想我需要调用CascadingDropDown.raiseSelectionChanged() – 2010-08-03 16:20:04