LookupMask class
Represents a mask definition for the levels of a hierarchical lookup table.
Microsoft.SharePoint.Client.ClientValueObject
Microsoft.ProjectServer.Client.LookupMask
Namespace: Microsoft.ProjectServer.Client
Assembly: Microsoft.ProjectServer.Client (in Microsoft.ProjectServer.Client.dll)
The following code example is a console application that queries the collection of lookup tables in a Project Web App instance and displays information about the code masks and entries for a specified lookup table. The projLutCollection variable is a LookupTableCollection object.
using System; using System.Collections.Generic; using System.Linq; using System.Text; using Microsoft.ProjectServer.Client; namespace ReadLookupTable { class Program { // Change the path for your Project Web App instance. private const string PWA_PATH = "http://ServerName/pwa/"; private static string lutName = "Department"; // Default lookup table to read. // Set the Project Server client context. private static ProjectContext projContext; static void Main(string[] args) { if (!ParseCommandLine(args)) { Usage(); ExitApp(); } projContext = new ProjectContext(PWA_PATH); var projLutCollection = projContext.LoadQuery( projContext.LookupTables .Where(lut => lut.Name == lutName)); projContext.ExecuteQuery(); if (projLutCollection.Count() > 0) { foreach (LookupTable lut in projLutCollection) { Console.WriteLine("'{0}' lookup table Id: {1}", lut.Name, lut.Id); Console.WriteLine("\tField type: {0}", lut.FieldType); // Get the lookup table mask data: Console.WriteLine("\nNumber of '{0}' lookup table masks: {1}\n", lut.Name, lut.Masks.Count()); foreach (LookupMask lutMask in lut.Masks) { Console.WriteLine("\tMaskType: {0}\tLength: {1}\tSeparator: {2}", lutMask.MaskType, lutMask.Length, lutMask.Separator); } // Get the collection of lookup table entries. projContext.Load(lut.Entries); projContext.ExecuteQuery(); Console.WriteLine("\nNumber of '{0}' lookup table entries: {1}", lut.Name, lut.Entries.Count()); foreach (LookupEntry lutEntry in lut.Entries) { Console.WriteLine("\n\t{0}, SortIndex: {1}\n\tFullValue: {2}", lutEntry.Id, lutEntry.SortIndex.ToString("F0"), lutEntry.FullValue); } } } else { Console.WriteLine("No lookup table named '{0}'", lutName); } ExitApp(); } private static void ExitApp() { Console.Write("\nPress any key to exit... "); Console.ReadKey(true); Environment.Exit(0); } // Parse the command line. Return true if there are no errors. private static bool ParseCommandLine(string[] args) { bool error = false; int argsLen = args.Length; try { for (int i = 0; i < argsLen; i++) { if (error) break; if (args[i].StartsWith("-") || args[i].StartsWith("/")) args[i] = "*" + args[i].Substring(1).ToLower(); switch (args[i]) { case "*lookuptable": case "*lut": if (++i >= argsLen) return false; lutName = args[i]; break; case "*?": default: error = true; break; } } } catch (FormatException) { error = true; } return !error; } private static void Usage() { string example = "Usage: ReadLookupTable [/lookuptable | /lut \"LookupTable Name\""; example += "\n\nExample: ReadLookupTable /lut \"Department\""; Console.WriteLine(example); } } }
For example, suppose the Department lookup table contains the following code masks and lookup table values:
Sequence Length Separator _______________________________________________ Characters Any . Uppercase Letters 2 .
Level Value ______________________________ 1 Test Dept 1 1 Test Dept 2 1 Test Dept C 2 CA 2 CB
Following is the output of the ReadLookupTable application (the GUIDs for your entries would be different).
Note |
|---|
Because the Department lookup table is built-in, the GUID of the Department lookup table is the same in all Project Web App instances. The GUID is the value of the Microsoft.Office.Project.Server.Library.LookupTables.DEPARTMENTS_LT_UID field. |
'Department' lookup table Id: e7397277-1ab0-4096-b2dd-57029a055ba4
Field type: TEXT
Number of 'Department' lookup table masks: 2
MaskType: CHARACTERS Length: 0 Separator: .
MaskType: UPPERCASE Length: 2 Separator: .
Number of 'Department' lookup table entries: 5
bbc07ff5-b06d-e211-93f4-0021704e28a0, SortIndex: 1
FullValue: Test Dept 1
bcc07ff5-b06d-e211-93f4-0021704e28a0, SortIndex: 2
FullValue: Test Dept 2
bdc07ff5-b06d-e211-93f4-0021704e28a0, SortIndex: 3
FullValue: Test Dept C
0a6ef8d8-6871-e211-93f4-0021704e28a0, SortIndex: 4
FullValue: Test Dept C.CA
0b6ef8d8-6871-e211-93f4-0021704e28a0, SortIndex: 5
FullValue: Test Dept C.CB
Press any key to exit...
Note