Viele CustomFields sind mit Werten aus Lookup Tabellen verknüpft.

Diese Werte sind nicht einfach unter der "TEXT_VALUE" Eigenschaft des CustomFields zu finden.

 

Um an den richtigen Wert heranzukommen benötigen wir drei Schritte:

 

1. Schritt - Zuerst brauchen wir ein CustomField

//CustomField ermitteln:

foreach (Microsoft.Office.Project.Server.Schema.CustomFieldDataSet.CustomFieldsRow cfrow

in cfDS.CustomFields)

{

  if (cfrow.MD_PROP_NAME == "meinCustomField")

     {

          meinCustomFieldUID = cfrow.MD_PROP_UID;//Guid des CustomFields

          break;

     }

}

 

2. Schritt - Die Guid des Eintrags ermitteln 

//Unter der CODE_VALUE Eigenschaft des CustomFields wird die Guid des entsprechenden Eintrags

aus der Lookup Tabelle erfasst. Hier ist es wichtig, noch zusätzlich nach der Guid des Vorgangs (Task) zu prüfen

(Weil wir uns in diesem Beispiel auf Vorgangsebene bewegen, haben wir eine taskUID):

 

foreach(Microsoft.Office.Project.Server.Schema.ProjectDataSet.TaskCustomFieldsRow

trow in projectDS.TaskCustomFields)

{

     if (trow.MD_PROP_UID == meinCustomFieldUID && trow.TASK_UID == taskUID)

          {

               wertUID = trow.CODE_VALUE;

               break;

          }

}

 

3. Schritt - Wert aus der Lookup Tabelle holen 

//Unter LT_VALUE_TEXT wird der eigentliche Text gespeichert:

 

Microsoft.Office.Project.Server.Schema.LookupTableDataSet lookupDS = new

Microsoft.Office.Project.Server.Schema.LookupTableDataSet();

lookupDS = lookUpTabService.ReadLookupTables(null, false, 1033);

DataRow ltRowCE = lookupDS.LookupTableTrees.FindByLT_STRUCT_UID(wertUID);

if (ltRowCE != null)

     {

          stringMeinWert = ltRowCE.Field("LT_VALUE_TEXT");

      }

 

Nun haben wir unter stringMeinWert den eigentlichen Wert gespeichert. Wie wir die PSI Dienste ansprechen

wird unter dem folgenden Blogeintrag beschrieben:

http://www.grobmanschwarz.de/de-ms-project-blog/331-psi-direkt-ansprechen

Bewertung: 5 / 5

Stern aktivStern aktivStern aktivStern aktivStern aktiv
 
Go to Top