CustomFields.CreateCustomFields Method

Creates enterprise custom fields.

Namespace:  WebSvcCustomFields
Assembly:  ProjectServerWebServices (in ProjectServerWebServices.dll)

Syntax

'Declaration
<SoapDocumentMethodAttribute("http://schemas.microsoft.com/office/project/server/webservices/CustomFields/CreateCustomFields", RequestNamespace := "http://schemas.microsoft.com/office/project/server/webservices/CustomFields/",  _
    ResponseNamespace := "http://schemas.microsoft.com/office/project/server/webservices/CustomFields/",  _
    Use := SoapBindingUse.Literal, ParameterStyle := SoapParameterStyle.Wrapped)> _
Public Sub CreateCustomFields ( _
    cfds As CustomFieldDataSet, _
    validateOnly As Boolean, _
    autoCheckIn As Boolean _
)
'Usage
Dim instance As CustomFields
Dim cfds As CustomFieldDataSet
Dim validateOnly As Boolean
Dim autoCheckIn As Boolean

instance.CreateCustomFields(cfds, validateOnly, _
    autoCheckIn)
[SoapDocumentMethodAttribute("http://schemas.microsoft.com/office/project/server/webservices/CustomFields/CreateCustomFields", RequestNamespace = "http://schemas.microsoft.com/office/project/server/webservices/CustomFields/", 
    ResponseNamespace = "http://schemas.microsoft.com/office/project/server/webservices/CustomFields/", 
    Use = SoapBindingUse.Literal, ParameterStyle = SoapParameterStyle.Wrapped)]
public void CreateCustomFields(
    CustomFieldDataSet cfds,
    bool validateOnly,
    bool autoCheckIn
)

Parameters

  • validateOnly
    Type: System.Boolean
    If true, validate the CustomFieldDataSet without creating the custom fields.
  • autoCheckIn
    Type: System.Boolean
    If true, check in the custom fields after they are created.

Remarks

For descriptions of the properties used to create a custom field, see CustomFieldDataSet.CustomFieldsRow.

Project Server Permissions

Permission

Description

ManageEnterpriseCustomFields

Modify the definitions of enterprise custom fields and lookup table values. Global permission.

Examples

The following example uses CustomFieldWS as the name of a Web reference to the Custom Fields Web service (http://ServerName/ProjectServerName/_vti_bin/psi/CustomFields.asmx). The btnCustomField_Click event handler is for a button on a Windows form application such as LoginDemo in the Project 2007 SDK download.

using PSLibrary = Microsoft.Office.Project.Server.Library;
. . .
private Guid customFieldUid;
. . .
private void btnCustomField_Click(object sender, EventArgs e)
{
    string cfName = "Test Task Cost";
    Guid entityTypeUid = new Guid(PSLibrary.EntityCollection.Entities.TaskEntity.UniqueId);
    lookupTableUid = Guid.Empty;
    ltRowDefaultUid = Guid.Empty;
    byte cfType = (byte)PSLibrary.CustomField.Type.COST;
    byte rollup = (byte)PSLibrary.CustomField.SummaryRollup.Sum;

    customFieldUid = CreateCustomField(
        customFields, cfName,
        entityTypeUid, lookupTableUid, ltRowDefaultUid,
        cfType, rollup);
}

// Test method for creating a custom field.
public Guid CreateCustomField(
    CustomFieldsWS.CustomFields customFields,
    string cfName,
    Guid entityTypeUid,
    Guid lookupTableUid,
    Guid ltRowDefaultUid,
    byte cfType,
    byte rollup
    )
{
    CustomFieldsWS.CustomFieldDataSet customFieldDataSet =
        new CustomFieldsWS.CustomFieldDataSet();
    CustomFieldsWS.CustomFieldDataSet.CustomFieldsRow cfRow =
        customFieldDataSet.CustomFields.NewCustomFieldsRow();
    Guid cfUid = Guid.NewGuid();

    cfRow.MD_PROP_UID = cfUid;
    cfRow.MD_AGGREGATION_TYPE_ENUM = rollup;
    cfRow.MD_ENT_TYPE_UID = entityTypeUid;
    cfRow.MD_PROP_NAME = cfName;
    cfRow.MD_PROP_IS_REQUIRED = false;
    cfRow.MD_PROP_IS_LEAF_NODE_ONLY = false;
    cfRow.MD_PROP_TYPE_ENUM = cfType;

    if (lookupTableUid == Guid.Empty)
        cfRow.SetMD_LOOKUP_TABLE_UIDNull();
    else
        cfRow.MD_LOOKUP_TABLE_UID = lookupTableUid;

    if (ltRowDefaultUid == Guid.Empty)
        cfRow.SetMD_PROP_DEFAULT_VALUENull();
    else
        cfRow.MD_PROP_DEFAULT_VALUE = ltRowDefaultUid;

    customFieldDataSet.CustomFields.Rows.Add(cfRow);

    try
    {
        bool validateOnly = false;
        bool autoCheckIn = true;
        customFields.CreateCustomFields(customFieldDataSet, validateOnly, autoCheckIn);
    }
    catch (SoapException ex)
    {
        // Add exception handler for ex
        cfUid = Guid.Empty;
    }
    catch (Exception ex)
    {
        // Add exception handler for ex
        cfUid = Guid.Empty;
    }
    return cfUid;
}

See Also

Reference

CustomFields Class

CustomFields Members

WebSvcCustomFields Namespace

Other Resources

Local and Enterprise Custom Fields

How to: Create an Enterprise Custom Field