Sharepoint博客帖子:根据发布日期排序

时间:2010-02-24 09:27:54

标签: sharepoint moss sharepoint-designer

我有一个sharepoint内部网门户,它有很多博客,并且有自定义设计。我们使用默认数据表单webpart来显示博客帖子。默认情况下,帖子会根据“创建日期”进行排序。

我有一个来自客户的新要求,要求我将排序标准更改为“已发布日期”。在不使用SharePoint Designer的情况下实现此目的的最简单方法是什么。

注意: 创建新视图不是解决方案,因为我无法应用自定义设计。

4 个答案:

答案 0 :(得分:3)

为什么不能使用SharePoint Designer?它会快得多。你可能做的是:

  1. 导出有问题的webpart并将其保存在某处。
  2. 在您喜欢的text / xml编辑器中打开它(我偏向于Notepad ++)
  3. 向下滚动到<property name="DataSourcesString" type="string">节点
  4. 您的订单可能在此节点内的CAML查询中表达。你正在寻找这样的东西:
  5. &amp; amp; lt; OrderBy&amp; amp; amp;&amp; amp; lt; FieldRef Name =&amp; amp; quot; Created&amp; amp; quot;升序=&放大器;放大器; QUOT; TRUE&安培; QUOT; /&放大器;放大器; GT;&放大器;放大器; LT; /排序依据&放大器;放大器; GT;

    1. 将“已创建”替换为已发布日期的内部字段名称,我相信它是“PublishingStartDate”
    2. 将webpart导回到它来自的页面

答案 1 :(得分:0)

您是否可以编辑当前视图,因此按发布日期排序? (我认为默认是发布日期..)

答案 2 :(得分:0)

您可以导出webpart并编辑下载的.webpart XML文件中的排序字段吗?

答案 3 :(得分:0)

感谢Zincorp, 我可以按发布日期排序。但是我在Intranet上有20多个博客,而且我没有访问生产服务器。基于Zincorp的解决方案,我需要为每个博客创建新的Web部件,或者需要编辑参数值,在我的情况下这是不可能的。

所以我以另一种方式实现了这一目标。

首先,我创建了一个从当前站点读取博客的Web部件。

string url = Request.Url.ToString();
             SPSite  site = new SPSite(url.Substring(0, url.LastIndexOf('/')));

使用CAML查询我可以阅读&amp;按发布日期对帖子排序。

下一个任务是用新的Web部件替换Web部件的所有发布数据。为此,我创建了一个功能,可以获取我的网站集中的所有博客,并使用以下代码替换Web部件

using (SPWeb spWebTest = spSiteTest.OpenWeb())
   {
     SPWebPartCollection webparts = spWebTest.GetWebPartCollection("default.aspx", Storage.Shared);
     for (int k = 0; k < webparts.Count; k++)
     {
       //get reference to webpart
       Microsoft.SharePoint.WebPartPages.WebPart wp = webparts[k];

       //check webpart Title to find webpart which is to be removed
       if (wp.Title == "Posts")
       {
         //delete webpart
         webparts.Delete(wp.StorageKey);

         //update spWeb object
         spWebTest.Update();  
                                }                                                                                                                                       }

//create new webpart object            
     WebPartToBeAdded wpNew = new WebPartToBeAdded();      

     //set properties of new webpart object     
     wpNew.ZoneID = "1";     
     wpNew.Title = "LatestPost";     
     wpNew.ChromeState = System.Web.UI.WebControls.WebParts.PartChromeState.Normal;     
     wpNew.ChromeType = System.Web.UI.WebControls.WebParts.PartChromeType.None;      

     //add new webpart object to webparts collection     
     webparts.Add(wpNew);      
   }