Partilhar via


How do we apply a custom filter on Project Center webpart Dynamically(usefull when added on a custom site....)

Welcome to First post ........

We can do a filtering(custom filter) on Project Center Dynamically. For instance Projet Center webpart is added on a Sitecolltion and while opening the site collection project Center should do a filtering based on a specific criteria

1. Sample code for extending Project Center is Available with SDK (CustomizeProjectCenter)

2. We have to attach a fuction to any of the event were we need to do the filtering on Project Center ( on the below sample code i have used onCellfocusChanged Event)

_grid.AttachEvent(SP.JsGrid.EventType.on, Cffilter);

 

3. Write a fuction for the filtering

function Cffilter(eventArgs) {
            
            var a = {}           
            var sites = window.location.href;                  
            var len = n.lastIndexOf("/");
            var myString = n.substring(0, len+1);
            var stname = n.replace(myString, "");

            a.ClientFilterXml = '<Filter><FieldComparison><Field>7806971e-9291-49ea-ba75-dd726faffba6</Field><Operator>Equals</Operator><Operand>' + stname + '</Operand></FieldComparison></Filter>'
            a.ServerFilterXml='<Filter xmlns:pwa=\"https://microsoft.com/ProjectServer/FilterSchema.xsd\"><Criteria><LogicalOperator logicalOperationType=\"Nop\"><FieldOperator fieldOperationType=\"Equal\"><CustomField fieldName=\"27955ccb-860b-45ec-8722-dfb02e6a2dca\" customFieldType=\"CodeValue\" ISMULTIVALUE=\"0\"/><Operand LTUID=\"89417fcc-768c-47aa-aa4b-d71bd979825e\">8f8ecc68-ed8a-4bfa-89d8-424db1353a64</Operand></FieldOperator></LogicalOperator></Criteria></Filter>'
            projectCenterComponent.get_GridSatellite().HandleFilter(a)
}

Scenario : in This sample we are doing the filtering based on the site colleciton name and a custom field which is created in Project Server

This Project Level custom field should be present in the view

ServerFilterXml doenst have any effect on this, however a should have a dummy ServerFilterXml

ClientFilterXml parameter plays the role here

Parameters:

stname is the valiable based on which the filtering will be done

7806971e-9291-49ea-ba75-dd726faffba6 is the UID for Project Level Custom field.

4. Once you actiavate the feature on the site , above code will do the filtering...

Happy coding ......�  Cheers .. Ajith ....