2009-02-27 81 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