Пример #1
0
        protected override void CreateChildControls()
        {
            return;

            SPQuery query = new SPQuery();

            // supports less than 130,000 records
            // query.Query = "<Where><Eq><FieldRef Name='_x804c__x4f4d_'/><Value Type='Text'>J</Value></Eq></Where>";
            query.Query = "<Where><And><Eq><FieldRef Name='_x6027__x522b_'/><Value Type='Text'>男</Value></Eq><Eq><FieldRef Name='_x804c__x4f4d_'/><Value Type='Text'>J</Value></Eq></And></Where>";
            SPWeb web = SPContext.Current.Web;
            PortalSiteMapProvider ps     = PortalSiteMapProvider.WebSiteMapProvider;
            PortalWebSiteMapNode  psNode = (PortalWebSiteMapNode)ps.FindSiteMapNode(web.ServerRelativeUrl);

            if (psNode != null)
            {
                Stopwatch timer = new Stopwatch();
                timer.Start();
                SiteMapNodeCollection items = ps.GetCachedListItemsByQuery(psNode, "人物列表", query, web);

                StringBuilder sb = new StringBuilder();
                foreach (PortalListItemSiteMapNode item in items)
                {
                    sb.Append(item["性别"]);
                    sb.Append(",");
                }
                timer.Stop();
                sb.Append("<hr>");
                sb.Append(string.Format("{0:N}", timer.Elapsed.Ticks / 10m));
                LiteralControl lc = new LiteralControl();
                lc.Text = sb.ToString();
                this.Controls.Add(lc);
            }
        }
Пример #2
0
        private SiteMapNode GetSiteMapRootNodeOfCurrentWeb(string url)
        {
            SiteMapNode result;

            try
            {
                url = SPContext.Current.Site.Url + url;
                using (SPSite site = new SPSite(url))
                {
                    using (SPWeb web = site.OpenWeb())
                    {
                        //获取站点结构
                        PortalSiteMapProvider CombinedNavSiteMapProvider = PortalSiteMapProvider.CurrentNavSiteMapProviderNoEncode;
                        result = CombinedNavSiteMapProvider.FindSiteMapNode(web.ServerRelativeUrl);
                    }
                }
            }
            catch (Exception ex)
            {
                return(null);
            }
            return(result);
        }
Пример #3
0
        private SiteMapNode GetStartingNode()
        {
            SiteMapNode startingNode = null;

            if (!String.IsNullOrEmpty(_startNodeKey))
            {
                startingNode = _provider.FindSiteMapNodeFromKey(_startNodeKey);
            }

            if (startingNode == null)
            {
                PublishingWeb pubWeb = PublishingWeb.GetPublishingWeb(_provider.CurrentWeb);

                if (!pubWeb.Navigation.InheritCurrent && pubWeb.ParentPublishingWeb.IsRoot)
                {
                    // then we are on the /eng or /fra just off the root so use the current node
                    return(currNode);
                }
                else if (!pubWeb.Navigation.InheritCurrent && pubWeb.Navigation.ShowSiblings)
                {
                    startingNode = _provider.FindSiteMapNodeFromKey(Microsoft.SharePoint.SPContext.Current.Web.ServerRelativeUrl);

                    startingNode         = startingNode.ParentNode;
                    showSiblingsChildren = false;
                }
                else if (!pubWeb.Navigation.InheritCurrent && !pubWeb.Navigation.ShowSiblings)
                {
                    startingNode = _provider.FindSiteMapNodeFromKey(Microsoft.SharePoint.SPContext.Current.Web.ServerRelativeUrl);
                    if (startingNode.Url.ToLower().IndexOf("/eng/pages") == -1 && startingNode.Url.ToLower().IndexOf("/fra/pages") == -1 && startingNode.ParentNode != null)
                    {
                        displaySubNodesOnly = true;
                    }
                }
                else if (pubWeb.Navigation.InheritCurrent)
                {
                    startingNode = _provider.FindSiteMapNodeFromKey(Microsoft.SharePoint.SPContext.Current.Web.ServerRelativeUrl);
                    PublishingWeb pWeb  = null;
                    SPWeb         web   = null;
                    int           count = 1;
                    do
                    {
                        startingNode = startingNode.ParentNode;
                        try
                        {
                            web  = _provider.CurrentSite.OpenWeb(startingNode.Key);
                            pWeb = PublishingWeb.GetPublishingWeb(web);
                            if ((!pWeb.Navigation.InheritCurrent && pWeb.Navigation.ShowSiblings) || (!pWeb.Navigation.InheritCurrent && !pWeb.Navigation.ShowSiblings))
                            {
                                if (startingNode.Url.ToLower().IndexOf("/eng/pages") == -1 && startingNode.Url.ToLower().IndexOf("/fra/pages") == -1 && startingNode.ParentNode != null)
                                {
                                    displaySubNodesOnly = true;
                                }
                            }
                            count++;
                        }
                        finally
                        {
                            if (web != null)
                            {
                                web.Dispose();
                            }
                        }
                    } while (pWeb.Navigation.InheritCurrent);
                }
                else
                {
                    string currenturl = HttpContext.Current.Request.Path.ToString().ToLower();
                    if (currenturl.IndexOf("eng") != -1)
                    {
                        startingNode = _provider.FindSiteMapNode("/eng");
                    }
                    else if (currenturl.IndexOf("fra") != -1)
                    {
                        startingNode = _provider.FindSiteMapNode("/fra");
                    }
                    else
                    {
                        startingNode = _provider.FindSiteMapNode("/");
                    }
                }
            }

            return(startingNode);
        }