我有一个DynamicPopulateExtender控件,我希望它根据asp:DropDownList的值呈现html。问题是如何编写抓取下拉值的javascript,将其分配给DynamicPopulate控件的contextKey,然后触发更新。
当我在JavaScript中使用populate()方法时,我的代码会冻结,因此我认为我的JavaScript需要一些工作。
这是我的DropDownList,Extender和我想要更新的面板:
<asp:DropDownList id="cboResponse" cssclass="DataControl" DataTextField="lov_label" DataValueField="lov_cd" runat="server" />
<asp:Panel ID="pSectFunc" runat="server" />
<ajaxToolkit:DynamicPopulateExtender ID="DPE" runat="server" TargetControlID="pSectFunc" ServicePath="/ajax/SAT.asmx" ServiceMethod="GetPanelHTML" />
这是我目前拥有的javascript。我可以从下拉到ServiceId获取值,但我无法找到并使用正确的ContextKey调用扩展器:
<script type="text/javascript">
function ValPickListSelection(val, args) {
args.IsValid = document.getElementById(val.controltovalidate).selectedIndex > 0;
}
//Need to update the contextKey of the DynamicPopulateExtender with the correct
//ServiceId so it can render the correct sector-function combination.
$(document).ready(function () {
$('#<%= cboResponse.ClientID %>').change(function () {
var dpe = $('#<%= DPE.ClientID %>');
var ServiceId = Number($(this).val());
if (ServiceId > 0) {
dpe.ContextKey = ServiceId;
dpe.populate();
}
});
});
</script>
答案 0 :(得分:0)
您需要设置DynamicPopulateExtender的BehaviorID属性。然后使用jQuery $ find()来获取对控件的引用。
<script type="text/javascript">
$(document).ready(function () {
$('#<%= cboResponse.ClientID %>').change(function () {
var dpe = $find('DPE_Behavior');
var contextKey = Number($(this).val());
if (dpe) {
dpe.populate(ServiceId);
}
});
});
</script>