如何强制Project Server 2013上的项目中心视图?

时间:2016-05-09 18:22:42

标签: sharepoint sharepoint-2013 project-server ms-project-server-2013

我希望每当用户访问其中包含Project Center webpart的特定页面时,她都应该已经设置了她的View(强制),例如“摘要”,“挣值”等。

我知道该视图已绑定到用户的上一个会话,因此如果在上次访问期间用户将View更改为“已获取值”,则下一个将为“获取值”。

如果用户每次使用Project Center webpart打开页面时,如何强制执行此操作,她将始终打开“摘要”视图?

感谢。

2 个答案:

答案 0 :(得分:0)

这是我编写的一个JavaScript解决方案,它使用查询字符串参数“viewuid”(视图的GUID)来设置视图

var projCenterExt;
var JsGridSatellite;

_spBodyOnLoadFunctionNames.push("projCenterChangeView")

function projCenterChangeView() 
{
   if (window.location.search.toLowerCase().indexOf("viewuid") >= 0)
   {
      var JsGridViewUid = window.location.search.toLowerCase().split("viewuid=")[1].split("&")[0];

      if (typeof projectCenterComponent !== 'undefined')
      {
         if (typeof JsGridSatellite === 'undefined') JsGridSatellite = projectCenterComponent.get_GridSatellite();

         JsGridSatellite.LoadNewView({uid: JsGridViewUid});
      }
   }
}

答案 1 :(得分:0)

谢谢爸爸丹尼尔。你让我们开始,但这只适用于Chrome。我们不得不在那里添加暂停,然后它在I.E.中工作。为了清楚起见,您需要找到要显示的视图的GUID并在超链接中使用它。

这是我的例子 http://projectserver/PWA/SitePages/ITDDash.aspx?idViewUID=38f25d41-2391-4ed4-b84e-2befec36b80b

var projCenterExt;
var JsGridSatellite;

_spBodyOnLoadFunctionNames.push("projCenterChangeView")
//console.debug("before projCenterChangeView");
function projCenterChangeView() 
{
//alert("in projCenterChangeView");
//console.debug("before 3 secs");
setTimeout(function(){ 
   //alert("in if:"+window.location.search.toLowerCase().indexOf("viewuid") );
   
if (document.location.search.toLowerCase().indexOf("viewuid") >= 0)
  
 {
      

    var JsGridViewUid = document.location.search.toLowerCase().split("viewuid=")[1].split("&")[0];
//alert("in if:"+JsGridViewUid );
      if (typeof projectCenterComponent !== 'undefined')
      {
         if (typeof JsGridSatellite === 'undefined'){
 	      //console.debug("JsGridSatellite  kis undefined");
        	 JsGridSatellite = projectCenterComponent.get_GridSatellite();
              //alert("jjc test");
         }
         JsGridSatellite.LoadNewView({uid: JsGridViewUid}); //orig
      }
//JsGridSatellite.LoadNewView({uid: JsGridViewUid});
     
   }

 //console.debug("after 3 secs");
 }, 1000);  
//alert("at end");
}