About Me

Having 12 years experience in Microsoft technologies.Since more than 7 years working in SharePoint technologies. Expert in providing consultation for SharePoint projects. Hands on with development and administration.

Tuesday, 14 June 2016

Project Server 2013 - Get/read projects from PWA - CSOM


In this article, I will show you how to get/read published projects in PWA site using CSOM in project server 2013. In this series of articles, I am taking windows application as a working example to get data from PWA.
Prerequisites
1. Visual studio 2010/2012/2013/2015

2. Copy Microsoft.ProjectServer.Client.dll from SharePoint 2013 servers from the location
C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\15\ISAPI

Step1: Create windows application from visual studio
Step2: Add Microsoft.ProjectServer.Client.dll
Step3: Add one combo box and one button control to form.
Step4: Declare PWA site URL in form load. Change URL accordingly based on your environment
private const string pwaPath = https://dev.xxx.com/PWA/;
Step5: Define project context on Form load
private static ProjectContext projContext;
Step6: Add following code on button click event
private void loadProjectsNew_Click(object sender, EventArgs e)
{

// create PWA context
projContext = new ProjectContext(pwaPath); 

// Access with default logged in credentials
projContext.Credentials = System.Net.CredentialCache.DefaultNetworkCredentials; 

// Load projects           
projContext.Load(projContext.Projects); 

//Execute query 
projContext.ExecuteQuery(); 

// Create dictionary object to store project GUID and Name in the form of key value pair           

Dictionary<Guid, string> projDictionary = new Dictionary<Guid, string>();

            try
            {
               //Loop through and add projects to combo box
                foreach(PublishedProject pubProj in projContext.Projects)
                {                  

                    projDictionary.Add(pubProj.Id, pubProj.Name); 

                   comboProjects.DataSource = new BindingSource(projDictionary, null);

                    comboProjects.DisplayMember = "Value";

                    comboProjects.ValueMember = "Key";                                   

                }
}
Happy project server programming...

No comments:

Post a Comment