【问题标题】:how to read the names of all custom fields in microsoft project?如何读取 microsoft project 中所有自定义字段的名称?
【发布时间】:2012-10-01 13:52:35
【问题描述】:

我无法找到自定义字段的本地名称。我尝试使用 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);
       }
    }

这是项目桌面的屏幕截图:

【问题讨论】:

  • 您可能会得到“推荐”的名称 - 这些名称是在 PWA 上为列定义的,但用户可以为 Project Pro 中的任何列提供自己的标签,并且我猜这些标签是表的本地标签。我认为没有办法通过 PSI 读取表定义 - 仅适用于 Project Pro。

标签: c# ms-project ms-project-server-2010 psi


【解决方案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 可用的表定义中。

【讨论】:

  • 好的...所以您是说我无法获得应用于项目 pro 中的自定义字段的标签?所以假设我添加了一个自定义字段列并输入了一个名称,如“测试自定义字段”,你是说我无法理解,对吧?
  • 我的答案取决于您“输入”名称的位置。如果在定义字段时在 PWA 中键入它,则可以使用我输入的代码查询名称。但是,如果您在 Project Pro 中将名称键入为 Label - 那么您可以使用 Project Pro 获取它
猜你喜欢
  • 1970-01-01
  • 2012-03-14
  • 1970-01-01
  • 2014-01-25
  • 2020-12-28
  • 2017-03-15
  • 1970-01-01
  • 1970-01-01
  • 2016-11-06
相关资源
最近更新 更多