2013-04-11 18 views
1

我有一個帶有gridview的CollapsiblePanelExtender控件,它放在用戶控件中。用戶控件中的jQuery腳本,僅在該頁面上的該控件的一個實例上運行

我添加下面的腳本在用戶控制結束理順動畫:

<script type="text/javascript"> 

    function pageLoad(sender, args) { 
     $find(("<%= CPE.ClientID %>"))._animation._fps = 35; 
     $find(("<%= CPE.ClientID %>"))._animation._duration = 0.5; 
    } 

</script> 

當我只運行2日手風琴被平滑掉頁,第一個是默認的低迷。

以下是運行腳本:

<script type="text/javascript"> 

    function pageLoad(sender, args) { 
     $find(("MainContent_AccordionGV1_CPE"))._animation._fps = 35; 
     $find(("MainContent_AccordionGV1_CPE"))._animation._duration = 0.5; 
    } 

</script> 

。 。 。 。

function pageLoad(sender, args) { 
     $find(("MainContent_AccordionGV2_CPE"))._animation._fps = 35; 
     $find(("MainContent_AccordionGV2_CPE"))._animation._duration = 0.5; 
    } 

</script> 

所以它應該按照這個工作。 任何想法,爲什麼不是?

謝謝。

增加:

我試圖手動將它添加到網頁,而不是用戶控制,相同的行爲。

<script type="text/javascript"> 

     function pageLoad(sender, args) { 
      $find(('<%= AccordionGV1.FindControl("CPE").ClientID %>'))._animation._fps = 35; 
      $find(('<%= AccordionGV1.FindControl("CPE").ClientID %>'))._animation._duration = 0.5; 
     } 
</script> 

工作 當我添加同一行,但對於AccordionGV2..the第一個停止工作。

讓我覺得這是一個比這更大的問題。

+0

什麼是調用你的pageLoad函數? – 2013-04-11 08:59:35

+0

其實什麼都沒有。 – AngelicCore 2013-04-11 09:04:30

回答

5

你應該在用戶控件使用這個腳本:

(function() { 
    Sys.WebForms.PageRequestManager.getInstance().add_pageLoaded(pageLoadedHandler); 

    function pageLoadedHandler() { 
     $find(("<%= CPE.ClientID %>"))._animation._fps = 35; 
     $find(("<%= CPE.ClientID %>"))._animation._duration = 0.5; 
    } 
})(); 

這樣每個用戶控件將不會覆蓋pageLoad功能定義,並且將使用pageLoaded自己的處理程序事件

+0

工作得很好,非常感謝.. 唯一的問題是我不明白爲什麼/它是如何工作的:) – AngelicCore 2013-04-11 09:15:42

+1

這是一個自動執行的匿名函數,它將每個實例的pageLoadedHandler添加到頁面上運行的事件列表負載。 – Netricity 2013-04-11 09:43:51

+1

除了@antmx註釋,'pageLoadedHandler'函數不會覆蓋先前註冊的處理程序,因爲它嵌套在自我評估的匿名函數作用域中。因此,每個用戶控件都會爲PageRequestManager的pageLoaded處理程序註冊自己的處理程序 – 2013-04-11 10:14:32

1

第二個pageLoad()函數覆蓋第一個。嘗試給每個實例的pageLoad()一個唯一的名稱,例如與他用戶控件的客戶端ID後綴是:

pageLoad_<%=this.ClientID%>() 
+0

很可能,沒想到那個* duh *。 – AngelicCore 2013-04-11 09:04:50

+1

他們沒有覆蓋對方。 將該函數重命名爲除pageLoad之外的任何內容都會使其不自動加載。 – AngelicCore 2013-04-11 09:10:04

+2

'pageLoad'是頁面呈現時由MicrosoftAjax庫命名約定的函數。所以如果你使用不同的名字,這個函數將不會被稱爲 – 2013-04-11 09:11:10

相關問題