如何在应用分组依据时更改SharePoint 2010列表视图Web部件中的排序顺序?

时间:2017-03-20 09:45:52

标签: sorting sharepoint sharepoint-2010

情境:

  • 我在SharePoint 2010环境中创建了一个自定义列表。
  • 在此列表中,有一个名为Status的选项列,其值为NewOpenClosed
  • 在页面上,我设置了一个视图,并使用此Group By列应用了Status

问题

  • 视图呈现如下图所示:

enter image description here

  • 我想更改此Status列的顺序,并且应该在此排序顺序中呈现:NewOpenClosed

如果我使用升序,它将显示如上图所示,如果我使用降序,那么它将显示为:OpenNew& Closed

任何人都可以帮助我如何获得此列的请求排序?有没有其他方法可以满足我的要求?

提前致谢!

1 个答案:

答案 0 :(得分:0)

我在谷歌搜索并试图找到解决方案,但没有找到任何适当的解决方案。据我了解,OOTB无法为用于分组的列应用自定义订单。您可以按升序或降序对它们进行排序。

但是如何,我发现了一个补丁,我能够使用JQuery满足要求。我在页面上应用了JQuery代码,它就像一个魅力:

JQuery代码

$("table[summary='GTSRequests']").each(function(){
   var tbodyGroupCol = $(this).find("tbody[id*='GroupByCol']");
   var grpNew = $(this).find("tbody[groupstring='%3B%23New%3B%23']");
   var grpOpen = $(this).find("tbody[groupstring='%3B%23Open%3B%23']");
   var grpClosed = $(this).find("tbody[groupstring='%3B%23Closed%3B%23']");

   if(grpNew.length > 0){
      var strGrpNewId = grpNew.attr("id").replace("titl", "tbod") + "_";
      grpNew.insertAfter(tbodyGroupCol)
      $("#" + strGrpNewId).insertAfter(grpNew);
   }

   if(grpOpen.length > 0){
      var strGrpOpenId = grpOpen.attr("id").replace("titl", "tbod") + "_";
      grpOpen.insertAfter("#" + strGrpNewId);
      $("#" + strGrpOpenId).insertAfter(grpOpen);
   }

   if(grpClosed.length > 0){    
      var strGrpClosedId = grpClosed.attr("id").replace("titl", "tbod") + "_";
      grpClosed.insertAfter("#" + strGrpOpenId);
      $("#" + strGrpClosedId).insertAfter(grpClosed);
   }
});

所以基本上使用这个代码,我正在改变HTML代码的位置,并根据我的需要放置它们。所以它看起来像自定义排序。

希望此代码能够帮助其他用户。