2012-12-14 3 views
0

저는 DynamicPopulateExtender 컨트롤을 가지고 있으며, asp : DropDownList 값을 기반으로 HTML을 렌더링하려고합니다. 문제는 드롭 다운의 값을 잡아서 DynamicPopulate 컨트롤의 contextKey에 할당 한 자바 스크립트를 작성한 다음 업데이트를 트리거하는 방법입니다.DynamicPopulateExtender의 ContextKey를 DropDownList 값으로 동적으로 업데이트합니다.

현재 자바 스크립트에서 populate() 메소드를 사용할 때 코드가 멈추어 자바 스크립트가 작동해야한다고 생각합니다. 여기

<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" /> 

그리고

내가 현재 가지고있는 자바 스크립트입니다 : 여기

내 DropDownList로, Extender에, 나는 업데이트 할 패널입니다. 나는 아래 서비스 id로 드롭에서 값을 얻을 수 있지만 찾아 올바른 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

당신은 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> 
관련 문제