2013-07-25 119 views
2

我現在面臨一個小問題在這裏:JavaScript的用戶控件裏面的UpdatePanel裏面是未定義

我有一個包含有一個佔位符的更新面板(在其內容模板)包含不同的用戶控件,顯示一個aspx頁面/根據特定條件隱藏。

其中一個腳本里面有一個初始化函數,它具有用服務器標籤(<%#myCtrl.ClientID%>)檢索到的控件來獲取值等等。事情是,當我調用這個函數一次在UpdatePanel完成更新,它只是說,這是不確定的..

彷彿我的用戶腳本根本看不見,

這是我與「initializeFees」函數調用aspx頁面時,更新完成後:

<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問題解決了!在你的updatepanel之外使用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 ... 
     }