PropertyDataType Class

Represents the definition for the data types of a profile property.

System.Object
  Microsoft.Office.Server.UserProfiles.PropertyDataType

Namespace:  Microsoft.Office.Server.UserProfiles
Assembly:  Microsoft.Office.Server (in Microsoft.Office.Server.dll)

[SharePointPermissionAttribute(SecurityAction.LinkDemand, ObjectModel = true)]
public sealed class PropertyDataType

The following code example shows how to use the PropertyDataType class.

[Visual Basic]

' This sample uses the following classes:
' UserProfileConfigManager,
' PropertyDataTypeCollection, PropertyDataType,
' PropertyCollection, Property, PropertyConstants,
' PropertyMapCollection, PropertyMap
Public Sub PropertyTypeAndMappingSample()
' Get portal site context from topology.
    Dim strUrl As String = "http://SampleName"
    Dim tm As New TopologyManager()
    Dim ps As PortalSite = tm.PortalSites(New Uri(strUrl))
    Dim pc As PortalContext = PortalApplication.GetContext(ps)

    ' Initialize user profile config manager object.
    Dim upcm As New UserProfileConfigManager(pc)

    ' The sample gets a property of type URL.
    Dim pdtc As PropertyDataTypeCollection = _
        upcm.GetPropertyDataTypes()
    Dim ptype As PropertyDataType = Nothing
    Dim enumType As IEnumerator = pdtc.GetEnumerator()
    While enumType.MoveNext()
        ptype = CType(enumType.Current, PropertyDataType)
        If ptype.Name.Equals("string") Then
            Exit While
            End If
        End While
    ' The sample creates a new custom property of type URL.
    Dim pcol As PropertyCollection = upcm.GetProperties()
    Dim prop As [Property] = pcol.Create(False)
    prop.Name = "division"
    prop.DisplayName = "my custom division"
    prop.Type = ptype.Name
    prop.Length = ptype.MaxCharCount
    prop.IsPrivate = False
    prop.IsUserEditable = True
    prop.IsVisibleOnEditor = True
    prop.IsVisibleOnViewer = True
    prop.IsAlias = False
    pcol.Add(prop)
    pcol.SetDisplayOrderByPropertyName(prop.Name, 1)
    pcol.CommitDisplayOrder()

    ' Edit the property sample,
    Dim ptitle As [Property] = _
    pcol.GetPropertyByName(PropertyConstants.Title)
    ' or get property by URI.
    ptitle = pcol.GetPropertyByURI([Property].URI_Title)
    ptitle.DisplayName = "Designation"
    ptitle.Commit()

    ' A property map sample.
    Dim ds As DataSource = upcm.GetDataSource()
    Dim pmc As PropertyMapCollection = ds.PropertyMapping
    pmc.Add(prop.Name, "division")
    ' Get arraylist of invalid mappings.
    Dim invmap As ArrayList = pmc.VerifyMapping(False)
    ' Remove current mapping if not valid.
    Dim pm As PropertyMap
    For Each pm In  invmap
        If pm.PropName = prop.Name Then
            pmc.Remove(pm.PropName)
        End If
    Next pm

        ' Remove the property sample.
        pcol.RemovePropertyByName("division")
    End Sub 'PropertyTypeAndMappingSample
// This sample uses the following classes:
// UserProfileConfigManager,
// PropertyDataTypeCollection, PropertyDataType,
// PropertyCollection, Property, PropertyConstants
// PropertyMapCollection, PropertyMap
    public void PropertyTypeAndMappingSample()
    {
        // Get portal site context from topology.
        string strUrl = "http://SampleName";
        TopologyManager tm = new TopologyManager();
        PortalSite ps = tm.PortalSites[new Uri(strUrl)];
        PortalContext pc = PortalApplication.GetContext(ps);

        // Iinitialize a user profile config manager object.
        UserProfileConfigManager upcm = new 
            UserProfileConfigManager(pc);

        // The sample gets a property of type URL.
        PropertyDataTypeCollection pdtc = upcm.GetPropertyDataTypes();
        PropertyDataType ptype = null;
        IEnumerator enumType = pdtc.GetEnumerator();
        while (enumType.MoveNext())
        {
            ptype = (PropertyDataType)enumType.Current;
            if (ptype.Name.Equals("string")) break;
        }

        // The sample creates a new custom property of type URL.
        PropertyCollection pcol = upcm.GetProperties();
        Property prop = pcol.Create(false);
        prop.Name = "division";
        prop.DisplayName = "my custom division";
        prop.Type = ptype.Name;
        prop.Length = ptype.MaxCharCount;
        prop.IsPrivate = false;
        prop.IsUserEditable = true;
        prop.IsVisibleOnEditor = true;
        prop.IsVisibleOnViewer = true;
        prop.IsAlias = false;
        pcol.Add(prop);
        pcol.SetDisplayOrderByPropertyName(prop.Name, 1);
        pcol.CommitDisplayOrder();

        // Edit the property sample,
        Property ptitle = 
            pcol.GetPropertyByName(PropertyConstants.Title);
        // or get property by URI.
        ptitle = pcol.GetPropertyByURI(Property.URI_Title);
        ptitle.DisplayName = "Designation";
        ptitle.Commit();

        // A property map sample.
        DataSource ds = upcm.GetDataSource();
        PropertyMapCollection pmc = ds.PropertyMapping;
        pmc.Add(prop.Name, "division");
        // Get arraylist of invalid mappings.
        ArrayList invmap = pmc.VerifyMapping(false);
        // Remove the current mapping if not valid.
        foreach(PropertyMap pm in invmap)
        {
            if (pm.PropName == prop.Name)
            {
            pmc.Remove(pm.PropName);
            }
        }

        // Remove the property sample.
        pcol.RemovePropertyByName("division");
    }

Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.

Community Additions

ADD
Show: