Question

J'essaie de faire une barre de navigation de gauche à SharePoint 2010 avec ce Teckniq= http://www.helpmeonshareppoint.com/2012/03/custom-sharepoining-top-menu-and.html

j'ai ce massage d'erreur :

Le DataSourceid de 'V4QuickLaunchmenu' doit être l'ID d'un contrôle de type iHierarchicalDataSource. Un contrôle avec ID 'QuickLaunchSitemap' n'a pas pu être trouvé.

Erreur de sorce:

Une exception non gérée a été générée lors de l'exécution de la demande Web actuelle. Les informations concernant l'origine et l'emplacement de l'exception peuvent être identifiées à l'aide de la trace de la pile d'exception ci-dessous.

trace de pile

[httpexception (0x80004005): le jeu de données de «V4QuickLaunchmenu» doit être l'ID d'un contrôle de type IHierarchicalDataSource. Un contrôle avec ID 'QuickLaunchsitemap' n'a pas pu être trouvé.] System.web.ui.webcontrols.hierarchicaldataboundControl.getdataSource () +2335265 System.web.ui.webcontrols.hierarchicaldataboundControl.ConnectToHierarchicalDataSource () +212 System.web.ui.webcontrols.hierarchicaldataboundControl.onload (evenargs e) +28 System.web.ui.control.loaderRecursive () +66 System.web.ui.control.loadRecursive () +191 System.web.ui.control.loadRecursive () +191 System.web.ui.control.loadRecursive () +191 System.web.ui.control.loadRecursive () +191 System.web.ui.control.loadRecursive () +191 System.web.ui.control.loadRecursive () +191 System.web.ui.control.loadRecursive () +191 System.Web.UI.Page.ProcessRequestMain (Boolean includetagesBeforeAsyncPoint, Boolean InclutestagesAfterAsynCpoint) +2428

j'ai trouvé que cela peut abuser beaucoup de réasontement différent de la raison pour laquelle ce hapende. J'ai essayé de changer mon fichier XML sans réussir. J'espère que vous comprendrez ce que je fais mal.

Je posterai les parties de mon code que je pense est pertinente ici est mon code:

dans web.config à l'intérieur du site Sitemap-> fournisseurs J'ai ajouté ceci:

<add name="CustomNavigationProvider"
                                    type="BNS.Intranet.HR.CustomPortalNavigation, BNS.Intranet.HR, Version=1.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" NavigationType="Current" />

CS-Fichier

    namespace BNS.Intranet.HR
{
    public class CustomPortalNavigation : PortalSiteMapProvider
    {
        public override SiteMapNodeCollection GetChildNodes(System.Web.SiteMapNode node)
        {
            PortalSiteMapNode pNode = node as PortalSiteMapNode;
            if (pNode != null)
            {
                if (pNode.Type == NodeTypes.Area)
                {
                    SiteMapNodeCollection nodeColl = base.GetChildNodes(pNode);
                    PortalSiteMapNode childNode = new PortalSiteMapNode(pNode.WebNode, "1", NodeTypes.Area, "http://sp2010dev04/navi/",
                        "1", "1");

                    PortalSiteMapNode childNode1 = null;
                    for (int i = 0; i < 20; i++)
                    {
                        childNode1 = new PortalSiteMapNode(childNode.WebNode, "1.1" + i, NodeTypes.Area,
                                    "http://sp2010dev04/navi", "1.1", "1.1");
                    }

                    nodeColl.Add(childNode);
                    SiteMapNodeCollection test = new SiteMapNodeCollection();
                    if (childNode1 != null)
                    {
                        test.Add(childNode1);
                        childNode.ChildNodes = test;
                    }
                    return nodeColl;
                }
                else // Shouldn't it always return base.GetChildNodes?
                    return base.GetChildNodes(pNode);
            }
            else  // Only return new SiteMapNodeCollection when pNode is null?
                return new SiteMapNodeCollection();
        }

éléments.xml-file

<?xml version="1.0" encoding="utf-8"?>
<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
    <Control Id="QuickLaunchDataSource" Sequence="30"
             ControlClass="System.Web.UI.WebControls.SiteMapDataSource"
             ControlAssembly="System.Web, Version=2.0.3600.0, Culture=Neutral, PublicTokenKey=71e9bce111e9429">
        <Property Name="ID">QuickLaunchSiteMap</Property>
        <Property Name="SiteMapProvider">CustomSiteMapProvider</Property>
        <Property Name="EnableSecurityTrimming">false</Property>
        <Property Name="EnableViewState">true</Property>
        <Property Name="ShowStartingNode">false</Property>
        <Property Name="StartingNodeOffset">0</Property>
        <Property Name="StartFromCurrentNode">false</Property>
    </Control>
    <HideCustomAction Id="QuickLaunch"
                     HideActionId="QuickLaunch"
                     GroupId="Customization"
                     Location="Microsoft.SharePoint.SiteSettings" />
</Elements>

mon délégué contrôle dans le Masterpage

<SharePoint:DelegateControl ID="DelegateControl5" runat="server" ControlId="QuickLaunchDataSource">
    <Template_Controls>
                    <asp:SiteMapDataSource SiteMapProvider="SPNavigationProvider" ShowStartingNode="False" id="QuickLaunchSiteMap" StartingNodeUrl="sid:1025" runat="server" />
                 </Template_Controls>
</SharePoint:DelegateControl>

deux nouveaux

<SharePoint:DelegateControl runat="server" ControlId="TopNavigationDataSource" Id="DelegateControl8">
  <Template_Controls>
   <asp:SiteMapDataSource
     ShowStartingNode="False"
     SiteMapProvider="SPNavigationProvider"
     id="SiteMapDataSource1"
     runat="server"
     StartingNodeUrl="sid:1002"/>
  </Template_Controls>
 </SharePoint:DelegateControl>

<SharePoint:DelegateControl ID="DelegateControl9" runat="server" ControlId="QuickLaunchDataSource">
<Template_Controls>
  <asp:SiteMapDataSource SiteMapProvider="SPNavigationProvider"
ShowStartingNode="False"
id="SiteMapDataSource2"
StartingNodeUrl="sid:1025"
runat="server" />
 </Template_Controls>
</SharePoint:DelegateControl>

Était-ce utile?

La solution

Try adding Both Delegate controls and it should resolve your problem.

Licencié sous: CC-BY-SA avec attribution
Non affilié à sharepoint.stackexchange
scroll top