代码之家  ›  专栏  ›  技术社区  ›  Kyle Trauberman pestades

SharePoint DelegateControl呈现顺序

  •  3
  • Kyle Trauberman pestades  · 技术社区  · 15 年前

    我有两个SharePoint功能,每个功能的实现方式相同(见下文),它们将控件添加到页面标题中的委托控件。一个控件依赖于另一个(一个是jQuery库,另一个依赖于jQuery),但是,当呈现控件时,控件的顺序不正确。如何指定这些控件的呈现顺序?

    控件(除引用不同的.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>
    

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

    我希望MyControl1.js在MyControl2.js之前渲染。

    3 回复  |  直到 15 年前
        1
  •  2
  •   Kyle Trauberman pestades    15 年前

    我可以通过向母版页的页眉添加第二个DelegateControl并向该委托添加jQuery来实现这一点。通过这种方式,我可以确保jQuery总是在加载之前加载,而不必编写一些逻辑来延迟加载依赖库。

    <SharePoint:DelegateControl runat="server" ControlId="jQueryDelegate" AllowMultipleControls="true"/>
    <SharePoint:DelegateControl runat="server" ControlId="AdditionalPageHead" AllowMultipleControls="true"/>
    
        2
  •  1
  •   Nathan DeWitt    15 年前

    在我看来,序列属性可以用来控制这些家伙的渲染顺序。给jQuery控件一个50的序列,给DependsOnjQuery控件一个100的序列,你应该很好。

    Delegate Control documentation on MSDN 更多信息。

        3
  •  0
  •   Anders Rask    15 年前

    您是否尝试在脚本上设置DEFER=“DEFER”属性。

    这将告诉用户代理,脚本应该在加载脚本之前等待页面加载和呈现。

    对于nathan:学员中的顺序用于确定 哪个代理控制