Export (0) Print
Expand All

CustomFields.CreateCustomFields Method

Office 2007

Creates enterprise custom fields.

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

[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

cfds
Type: WebSvcCustomFields.CustomFieldDataSet
The CustomFieldDataSet contains the custom field definitions.
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.

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.

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;
}

Community Additions

ADD
Show:
© 2014 Microsoft