Clase LookupMask
Representa una definición de máscara para los niveles de una tabla de consulta jerárquica.
Jerarquía de la herencia
System.Object
Microsoft.SharePoint.Client.ClientValueObject
Microsoft.ProjectServer.Client.LookupMask
Espacio de nombres: Microsoft.ProjectServer.Client
Ensamblado: Microsoft.ProjectServer.Client (en Microsoft.ProjectServer.Client.dll)
Sintaxis
'Declaración
<ScriptTypeAttribute("PS.LookupMask", ValueObject := True, ServerTypeId := "{2aeb3d46-6e78-4035-b908-9e0a55f5c56d}")> _
Public Class LookupMask _
Inherits ClientValueObject
'Uso
Dim instance As LookupMask
[ScriptTypeAttribute("PS.LookupMask", ValueObject = true, ServerTypeId = "{2aeb3d46-6e78-4035-b908-9e0a55f5c56d}")]
public class LookupMask : ClientValueObject
Comentarios
Todas las tablas de búsqueda deben tener al menos una máscara y cuadros de texto sólo pueden tener más de una máscara.
Ejemplos
En el siguiente ejemplo es una aplicación de consola que consulta la colección de tablas de búsqueda en una instancia de Project Web App y muestra información sobre las máscaras de código y las entradas de una tabla de consulta especificada. La variable projLutCollection es un objeto LookupTableCollection .
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 = "https://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);
}
}
}
Por ejemplo, supongamos que la tabla de consulta de departamento contiene las siguientes máscaras de código y valores de tabla de búsqueda:
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
A continuación es el resultado de la aplicación ReadLookupTable (los GUID de las entradas sería diferentes).
Nota
Dado que la tabla de consulta de departamento está integrada, el GUID de la tabla de consulta del departamento es el mismo en todas las instancias de Project Web App . El GUID es el valor del campo Microsoft.Office.Project.Server.Library.LookupTables.DEPARTMENTS_LT_UID .
'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...
Seguridad para subprocesos
Los miembros static (Shared en Visual Basic) públicos de este tipo son seguros para subprocesos. No se garantiza que los miembros de instancias sean seguros para los subprocesos.