如何阅读microsoft项目中所有自定义字段的名称?

时间:2012-10-11 00:22:52

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

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

这是一个如何显示项目桌面的截图:

enter image description here

1 个答案:

答案 0 :(得分: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提供的表定义中。