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で定義され、ProjectProでのみ使用できるテーブル定義に保存されます。

于 2012-10-11T17:25:24.047 に答える