Search 使用当前用户更改搜索结果核心web部件中的固定关键字查询,(作者:{CurrentUser})

Search 使用当前用户更改搜索结果核心web部件中的固定关键字查询,(作者:{CurrentUser}),search,sharepoint-2010,web-parts,Search,Sharepoint 2010,Web Parts,是否有方法更改搜索结果核心web部件中的固定关键字查询以获取当前用户(作者:{CurrentUser}) 我已经使用了作用域和过滤器,可以很好地提供固定关键字查询,但无法将其更改为始终获取当前用户 基本上,我希望FixedQuery字段为author:Last-First 这里有几篇文章提示了这一点,但我只想在.aspx文件中的XSL中动态地更改它,并完成它。有人吗 好的,我找到了一个解决方法。我会尽可能简单地安排它 创建一个新的ASPX页面,该页面上有一个“核心结果Web部件”,并且在属性设

是否有方法更改搜索结果核心web部件中的固定关键字查询以获取当前用户(
作者:{CurrentUser}

我已经使用了作用域和过滤器,可以很好地提供固定关键字查询,但无法将其更改为始终获取当前用户

基本上,我希望
FixedQuery
字段为
author:Last-First

这里有几篇文章提示了这一点,但我只想在
.aspx
文件中的
XSL
中动态地更改它,并完成它。有人吗

好的,我找到了一个解决方法。我会尽可能简单地安排它

  • 创建一个新的ASPX页面,该页面上有一个“
    核心结果Web部件
    ”,并且在属性设置为“
    用户查询
    ”的“
    结果查询选项
    ”下有“
    跨Web部件查询ID
  • 我们将从“
    页面视图Web部件
    ”内部调用此页面,wep部件在iframe中加载另一个页面。然后,我们将把查询添加到正在“
    页面视图Web部件
    ”中加载的页面的URL中。(例如,
    site.com/ourAspxFromStep1.aspx?k=author:first%20last
  • 我希望这是清楚的。我根据列表中的值在页面加载时动态添加了带有c#服务器端代码的web部件,因此查询是在页面加载时动态生成的。如果您有任何意见或问题,请告诉我

    下面是我调用的客户端函数,它动态添加web部件
    core\u wp\u for_embed.aspx
    是上述步骤1中提到的文件

    protected void refreshFeeds(string tmpUserName, SPUserToken userToken) {
      using(SPSite site = new SPSite("http://www.site.com")) {
        using(SPWeb web = site.OpenWeb()) {
          web.AllowUnsafeUpdates = true;
          SPFile file = web.GetFile(web.Url + "/currentPage.aspx");
          using(SPLimitedWebPartManager webPartManager =
            file.GetLimitedWebPartManager(PersonalizationScope.User)) {
            SPLimitedWebPartCollection webparts = webPartManager.WebParts;
            int j = webparts.Count;
            for (int k = j - 1; k >= 0; k--) {
              Microsoft.SharePoint.WebPartPages.WebPart wp =
                (Microsoft.SharePoint.WebPartPages.WebPart)webparts[k];
              if (wp.GetType().ToString() ==
    "Microsoft.SharePoint.WebPartPages.PageViewerWebPart") {
                webPartManager.DeleteWebPart(wp);
              }
            }
            // Zone should be cleared. Now loop through list on users site and add web parts for each item
            SPSite site2 = new SPSite("http://www.site.com/personal/" + tmpUserName);
            SPWeb web2 = site2.OpenWeb();
            SPList list = web2.Lists["SomeUserList"];
            int i = 0;
            foreach(SPListItem currentItem in list.Items) {
              if(Convert.ToBoolean(currentItem["BooleanField"]) == true) {
                PageViewerWebPart pvwp = new PageViewerWebPart();
                pvwp.Title = currentItem["Title"].ToString();
                pvwp.ChromeState = System.Web.UI.WebControls.WebParts.PartChromeState.Normal;
                pvwp.ChromeType = System.Web.UI.WebControls.WebParts.PartChromeType.TitleOnly;
                pvwp.ContentLink = "http://www.site.com/core_wp_for_embed.aspx?k=scope:"
                  + currentItem["Item_Scope"].ToString();
                pvwp.AllowEdit = true;
                webPartManager.AddWebPart(pvwp, "someZone", i);
                webPartManager.SaveChanges(pvwp);
                i++;
              }
            }
          }
          web.Update();
          web.AllowUnsafeUpdates = false;
        }
      }
      Response.Redirect(Request.RawUrl);
    }
    
    好的,我已经找到了一个解决方法。我会尽可能简单地安排它

  • 创建一个新的ASPX页面,该页面上有一个“
    核心结果Web部件
    ”,并且在属性设置为“
    用户查询
    ”的“
    结果查询选项
    ”下有“
    跨Web部件查询ID
  • 我们将从“
    页面视图Web部件
    ”内部调用此页面,wep部件在iframe中加载另一个页面。然后,我们将把查询添加到正在“
    页面视图Web部件
    ”中加载的页面的URL中。(例如,
    site.com/ourAspxFromStep1.aspx?k=author:first%20last
  • 我希望这是清楚的。我根据列表中的值在页面加载时动态添加了带有c#服务器端代码的web部件,因此查询是在页面加载时动态生成的。如果您有任何意见或问题,请告诉我

    下面是我调用的客户端函数,它动态添加web部件
    core\u wp\u for_embed.aspx
    是上述步骤1中提到的文件

    protected void refreshFeeds(string tmpUserName, SPUserToken userToken) {
      using(SPSite site = new SPSite("http://www.site.com")) {
        using(SPWeb web = site.OpenWeb()) {
          web.AllowUnsafeUpdates = true;
          SPFile file = web.GetFile(web.Url + "/currentPage.aspx");
          using(SPLimitedWebPartManager webPartManager =
            file.GetLimitedWebPartManager(PersonalizationScope.User)) {
            SPLimitedWebPartCollection webparts = webPartManager.WebParts;
            int j = webparts.Count;
            for (int k = j - 1; k >= 0; k--) {
              Microsoft.SharePoint.WebPartPages.WebPart wp =
                (Microsoft.SharePoint.WebPartPages.WebPart)webparts[k];
              if (wp.GetType().ToString() ==
    "Microsoft.SharePoint.WebPartPages.PageViewerWebPart") {
                webPartManager.DeleteWebPart(wp);
              }
            }
            // Zone should be cleared. Now loop through list on users site and add web parts for each item
            SPSite site2 = new SPSite("http://www.site.com/personal/" + tmpUserName);
            SPWeb web2 = site2.OpenWeb();
            SPList list = web2.Lists["SomeUserList"];
            int i = 0;
            foreach(SPListItem currentItem in list.Items) {
              if(Convert.ToBoolean(currentItem["BooleanField"]) == true) {
                PageViewerWebPart pvwp = new PageViewerWebPart();
                pvwp.Title = currentItem["Title"].ToString();
                pvwp.ChromeState = System.Web.UI.WebControls.WebParts.PartChromeState.Normal;
                pvwp.ChromeType = System.Web.UI.WebControls.WebParts.PartChromeType.TitleOnly;
                pvwp.ContentLink = "http://www.site.com/core_wp_for_embed.aspx?k=scope:"
                  + currentItem["Item_Scope"].ToString();
                pvwp.AllowEdit = true;
                webPartManager.AddWebPart(pvwp, "someZone", i);
                webPartManager.SaveChanges(pvwp);
                i++;
              }
            }
          }
          web.Update();
          web.AllowUnsafeUpdates = false;
        }
      }
      Response.Redirect(Request.RawUrl);
    }
    

    在这里有一个星期的赏金但是什么都没有。。。有人有什么吗?在这里有一个星期的赏金但什么都没有。。。有人有什么吗?