使用DropDownList值动态更新DynamicPopulateExtender的ContextKey

时间:2012-12-14 22:31:09

标签: javascript asp.net ajax vb.net ajaxcontroltoolkit

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

1 个答案:

答案 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>