0

我无法找到自定义字段的本地名称。我尝试使用 PSI 自定义字段服务,但没有运气。它似乎只是获得企业领域。我真的不确定它在哪里隐藏本地名称。

我能够从 ReadProjectDataSet 调用中获取自定义字段,但它不包含自定义字段的名称。

这是我的代码,我认为它是从 projtool 示例中复制的:

 public static SvcCustomFields.CustomFieldDataSet ReadCustomFields( )
    {
        CheckAccess();

        using (var scope = new OperationContextScope(projectClient.InnerChannel))
        {
            ProjectAuthentication.UseCorrectHeaders(isImpersonated);

            return customFieldsClient.ReadCustomFields(string.Empty, false);
       }
    }

这是它如何出现项目桌面的屏幕截图:

在此处输入图像描述

4

1 回答 1

1

代码是这样的:

CustomFieldDataSet cfDS = new CustomFieldDataSet();

PSLibrary.Filter cfFilter = new Microsoft.Office.Project.Server.Library.Filter();
cfFilter.FilterTableName = cfDS.CustomFields.TableName;

cfFilter.Fields.Add(new PSLibrary.Filter.Field(cfDS.CustomFields.TableName, cfDS.CustomFields.MD_PROP_NAMEColumn.ColumnName));
cfFilter.Fields.Add(new PSLibrary.Filter.Field(cfDS.CustomFields.TableName, cfDS.CustomFields.MD_PROP_IDColumn.ColumnName));
cfFilter.Fields.Add(new PSLibrary.Filter.Field(cfDS.CustomFields.TableName, cfDS.CustomFields.MD_PROP_UIDColumn.ColumnName));
cfFilter.Fields.Add(new PSLibrary.Filter.Field(cfDS.CustomFields.TableName, cfDS.CustomFields.MD_LOOKUP_TABLE_UIDColumn.ColumnName));
cfFilter.Fields.Add(new PSLibrary.Filter.Field(cfDS.CustomFields.TableName, cfDS.CustomFields.MD_PROP_TYPE_ENUMColumn.ColumnName));

cfDS = ReadCustomFields(cfFilter.GetXml(), false);

该示例是作为 CustomFieldsClient 的补充编写的。它读取自定义字段的名称、ID、UID、查找表的 UID 和字段的类型。

但它只读取字段的名称。字段有用户定义的标签,标签在 Project Pro 中定义并存储在仅通过 Project Pro 可用的表定义中。

于 2012-10-11T17:25:24.047 回答