2009-02-27 94 views
3

我有兩個SharePoint功能,每個都以相同的方式實現(請參閱下文),它將控件添加到頁面標題中的委託控件。其中一個控件依賴於另一個控件(一個是jQuery庫,另一個依賴於jQuery),但是,當呈現控件時,控件的順序不正確。我如何指定這些控件的渲染順序?SharePoint DelegateControl渲染順序

控制(兩者是相同的,除了它們引用不同js文件):

<%@ Control ClassName="MyScriptControl" %> 
<script type="text/javascript" src="/_layouts/MyScript.js"></script> 

feature.xml的:

<?xml version="1.0" encoding="utf-8" ?> 
<Feature Id="AA9D59AC-D53E-4338-9B52-CD39F2A8C31A" 
    ActivateOnDefault="true" 
    Title="My Feature" 
    Description="Does something." 
    Scope="Site" Version="1.0.0.0" 
    Hidden="FALSE" 
    DefaultResourceFile="core" 
    xmlns="http://schemas.microsoft.com/sharepoint/"> 
    <ElementManifests> 
     <ElementManifest Location="MyFeature\Elements.xml" /> 
    </ElementManifests> 
</Feature> 

Elements.xml的:

<?xml version="1.0" encoding="utf-8" ?> 
<Elements xmlns="http://schemas.microsoft.com/sharepoint/" 
    Id="24A4BB9A-9636-4a73-B3A5-35661DE19902"> 
    <Control Id="AdditionalPageHead" 
     ControlSrc="~/_controltemplates/MyControl.ascx" /> 
</Elements> 

頁面上的輸出(jQuery在DependsOnjQuery之前部署):

<script type="text/javascript" src="/_layouts/DependsOnjQuery.js"></script> 
<script type="text/javascript" src="/_layouts/jQuery.min.js"></script> 

我想讓MyControl1.js在MyControl2.js之前呈現。

回答

2

我能夠通過將第二個DelegateControl添加到我的主頁面的標題,並將jQuery添加到該委託來獲得此工作。通過這種方式,我可以確保jQuery始終在其他所有內容之前加載,而無需編寫一些邏輯來延遲依賴庫的加載。

<SharePoint:DelegateControl runat="server" ControlId="jQueryDelegate" AllowMultipleControls="true"/> 
<SharePoint:DelegateControl runat="server" ControlId="AdditionalPageHead" AllowMultipleControls="true"/> 
1

它看起來像Sequence屬性可以用來控制這些傢伙的渲染順序。給你的jQuery控件一個50的順序,你的DependsOnjQuery控件的順序爲100,你應該很好。

查看Delegate Control documentation on MSDN瞭解更多信息。

+0

這就是我最初的想法,但是當我嘗試了這一點後,它沒有改變順序。 – 2009-02-27 21:41:55

0

是否嘗試在腳本上設置DEFER =「DEFER」屬性。

它會告訴用戶代理該腳本應在加載腳本之前等待頁面加載和渲染。

否則,您可以通過在一個腳本中設置變量來破解它,該腳本在加載腳本時設置爲true。在另一個你放置的邏輯測試(思考循環和超時方法),如果腳本被加載,然後調用你的邏輯,當兩個腳本加載。

不是很好,但您需要某種邏輯來處理執行,而不是隻在腳本中內聯運行方法。

To nathan:委託中的序列用於確定哪個委託控制加載。這與該問題無關。據我瞭解,JS文件只是在一個恰好是代理控制的腳本上設置值。

+0

我希望序列會影響更多...有時候文檔不是完整的。 – 2009-03-03 14:24:48