2013-07-25 4 views
2

я столкнулся с небольшой проблемой здесь:Javascript внутри UserControl внутри UpdatePanel неопределен

у меня есть страница ASPX, которая содержит панель обновления, которая имеет место держатель (в шаблоне контента), содержащих различные UserControls, которые показывают/скрыть в зависимости от определенных условий.

У одного из них есть длинный скрипт внутри с функцией инициализации, которая имеет элементы управления, полученные с помощью тегов сервера (<% # myCtrl.ClientID%>), чтобы получить значения и т. Д., И дело в том, что когда я вызываю эту функцию один раз UpdatePanel завершает обновление, он просто говорит, что это не определено ..

, как будто мой UserControl сценарий не был замечен на всех,

Вот моя ASPX страница с вызовом функции «initializeFees», когда обновление будет завершено:

<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePartialRendering="true" 
      EnablePageMethods="true"> 
<asp:UpdatePanel runat="server"> 
     <ContentTemplate> 
      <script type="text/javascript">  
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(initializeFees); 

      </script> 
     <div class="Registration_ProgressContent"> 
      <uc3:Ctrl_RegistrationProgress ID="Ctrl_RegistrationProgress1" runat="server" OnSelectedIndexChanged="changeStep" /> 
     </div> 
    </div> 
    <div class="Registration_StepContent"> 
     <asp:PlaceHolder runat="server"> 
      <uc1:Ctrl_RegistrationGeneral ID="Ctrl_RegistrationGeneral1" runat="server" Visible="False" /> 
      <uc4:Ctrl_RegistrationFee ID="Ctrl_RegistrationFee1" runat="server" Visible="False" /> 

, и вот мой "UC4: Ctrl_RegistrationFee" Код HTML:

<%@ Control Language="vb" AutoEventWireup="false" CodeBehind="Ctrl_RegistrationFee.ascx.vb" 
    Inherits="MDSInscription.Ctrl_RegistrationFee" %> 
<script type="text/javascript"> 

    //Validateurs 
    var valTeam; 
    var valEmail; 
    var imgName; 

    function initializeFees() { 
     valTeam = $('#valCreateTeamName'); 
     valEmail = $('#valCreateEmail'); 

     $("#accordion").accordion({ 
     //activate: function (event, ui) { 
     // //    validateSelection(); 
     //} 
    }); 

с кодом позади (VB.NET ..... # радость ..):

Private Sub Page_PreRender(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.PreRender 

    ScriptManager.RegisterClientScriptBlock(Me, Page.GetType(), "Init", "initializeFees();", True) 

End Sub 

это код я получил после того, как в поисках более часа, и я получаю следующее сообщение об ошибке:

Uncaught ReferenceError: initializeFees is not defined 

, если вы чувствуете, как вы можете помочь, спасибо!

+0

У меня почти такая же проблема. Вы решили это каким-то образом? Я предполагаю, что AJAX вызывает проблему, потому что раньше у меня не было этой проблемы на других страницах. – Nurp

+0

yep проблема решен! используйте функцию pageLoad, вне вашей панели обновления; он будет срабатывать каждый раз, когда обновляется панель обновления. – Shide

+0

Хорошо, спасибо, но это было совсем не то, что мне нужно. Это может помочь кому-то еще :) – Nurp

ответ

0

проблема решается с помощью следующего сценария, который я поставил вне панели обновления:

function pageLoad() { 
     $(".datepicker").datepicker({ 
      changeMonth: true, 
      changeYear: true, 
      minDate: "-100Y", 
      maxDate: "-15Y", 
      dateFormat: "dd/mm/yy", 
      yearRange: "1913:2300" 
     }); 
     //more Code executed on each postback from the update panel ... 
     } 
Смежные вопросы