0

我有一个 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>
4

1 回答 1

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>
于 2012-12-17T18:28:53.140 回答