Passen Sie die Auswahl an

Normalerweise verwenden Sie globale Auswahlmöglichkeiten (Optionssätze), um Felder so festzulegen, dass verschiedene Felder denselben Satz von Optionen verwenden können, die an einem Speicherort verwaltet werden. Im Gegensatz zu lokalen Auswahlmöglichkeiten, die nur für eine bestimmte Tabellenspalte definiert sind, können Sie globale Auswahlmöglichkeiten wiederverwenden. Sie können auch in Anforderungsparametern auf eine ähnliche Weise wie eine Enumeration verwendet werden.

Hinweis

Nur der Herausgeber eines verwaltete Lösung kann Änderungen importieren, die eine Option aus einem globalen Optionssatz löschen. Dazu gehören von Microsoft veröffentlichte Lösungen wie die sofort einsatzbereiten globalen Optionssätze. Um eine Änderung an den Optionssätzen vorzunehmen, muss ein Upgrade für die Lösung durchgeführt werden, die den Optionssatz hinzugefügt hat. Weitere Informationen: Upgraden oder Aktualisieren einer Lösung. Benutzer können eine Option in ihrer Umgebung manuell löschen, wenn sie die Lösung nicht ändern oder den Lösungsherausgeber kontaktieren können, aber dies muss in jeder Umgebung manuell erfolgen.

Wenn Sie eine globale Auswahlmöglichkeit definieren, indem Sie CreateOptionSetRequest verwenden, empfehlen wir eine Wertvergabe durch das System. Dazu übergeben Sie einen null -Wert, wenn Sie die neue OptionMetadata-Instanz erstellen. Wenn Sie eine Auswahlmöglichkeit definieren, enthält sie ein Auswahlwertpräfix, das für den Kontext des Herausgebersatzes für die Lösung spezifisch ist, in der die Auswahlmöglichkeit erstellt wird. Dieses Präfix trägt dazu bei, die Wahrscheinlichkeit zu verringern, doppelte Auswahlmöglichkeiten für eine verwaltete Lösung und jegliche Auswahlmöglichkeiten zu erstellen, die in Organisationen definiert sind, in denen Ihre verwaltete Lösung installiert ist. Weitere Informationen finden Sie unter Zusammenführen von Auswahloptionen.

Sie können das Codebeispiel hier herunterladen.

Meldungsanforderungsklassen

Verwenden Sie die folgenden Nachrichtenanforderungsklassen, um mit globalen Auswahlmöglichkeiten zu arbeiten.

Verwenden Sie die folgenden Nachrichtenanforderungsklassen sowohl mit globalen als auch mit lokalen Auswahlmöglichkeiten.

Abrufen einer globalen Auswahlmöglichkeit

Das folgende Codebeispiel zeigt, wie Sie eine globale Auswahlmöglichkeit anhand des Namens mit der Nachricht RetrieveOptionSetRequest abrufen:

// Use the RetrieveOptionSetRequest message to retrieve
// a global option set by it's name.
RetrieveOptionSetRequest retrieveOptionSetRequest =
    new RetrieveOptionSetRequest
    {
        Name = _globalOptionSetName
    };

// Execute the request.
RetrieveOptionSetResponse retrieveOptionSetResponse =
    (RetrieveOptionSetResponse)svc.Execute(
    retrieveOptionSetRequest);

Console.WriteLine("Retrieved {0}.",
    retrieveOptionSetRequest.Name);

// Access the retrieved OptionSetMetadata.
OptionSetMetadata retrievedOptionSetMetadata =
    (OptionSetMetadata)retrieveOptionSetResponse.OptionSetMetadata;

// Get the current options list for the retrieved attribute.
OptionMetadata[] optionList =
    retrievedOptionSetMetadata.Options.ToArray();

Eine globale Auswahl erstellen

Verwenden Sie die Nachricht CreateOptionSetRequest, um eine neue globale Auswahlmöglichkeit zu erstellen. Legen Sie die Eigenschaft IsGlobal auf true fest, um anzuzeigen, dass die Auswahlmöglichkeit global ist. Im folgenden Codebeispiel wird die globale Auswahlmöglichkeit „Beispieloptionssatz“ erstellt:

// Define the request object and pass to the service.
CreateOptionSetRequest createOptionSetRequest = new CreateOptionSetRequest
{
    // Create a global option set (OptionSetMetadata).
    OptionSet = new OptionSetMetadata
    {
        Name = _globalOptionSetName,
        DisplayName = new Label("Example Option Set", _languageCode),
        IsGlobal = true,
        OptionSetType = OptionSetType.Picklist,
        Options =
    {
        new OptionMetadata(new Label("Open", _languageCode), null),
        new OptionMetadata(new Label("Suspended", _languageCode), null),
        new OptionMetadata(new Label("Cancelled", _languageCode), null),
        new OptionMetadata(new Label("Closed", _languageCode), null)
    }
    }
};

// Execute the request.
CreateOptionSetResponse optionsResp =
    (CreateOptionSetResponse)svc.Execute(createOptionSetRequest);

Erstellen einer globalen Auswahlmöglichkeit

Das folgende Beispiel zeigt, wie Sie mit CreateAttributeRequest eine Auswahlspalte erstellen, die eine globale Auswahlmöglichkeit verwendet:

// Create a Picklist linked to the option set.
// Specify which entity will own the picklist, and create it.
CreateAttributeRequest createRequest = new CreateAttributeRequest
{
    EntityName = Contact.EntityLogicalName,
    Attribute = new PicklistAttributeMetadata
    {
        SchemaName = "sample_examplepicklist",
        LogicalName = "sample_examplepicklist",
        DisplayName = new Label("Example Picklist", _languageCode),
        RequiredLevel = new AttributeRequiredLevelManagedProperty(AttributeRequiredLevel.None),

        // In order to relate the picklist to the global option set, be sure
        // to specify the two attributes below appropriately.
        // Failing to do so will lead to errors.
        OptionSet = new OptionSetMetadata
        {
            IsGlobal = true,
            Name = _globalOptionSetName
        }
    }
};

svc.Execute(createRequest);

Aktualisieren einer globalen Auswahlmöglichkeit

Das folgende Codebeispiel zeigt, wie Sie die Beschriftung für eine globale Auswahlmöglichkeit mit UpdateOptionSetRequest aktualisieren:

// Use UpdateOptionSetRequest to update the basic information of an option
// set. Updating option set values requires different messages (see below).
UpdateOptionSetRequest updateOptionSetRequest = new UpdateOptionSetRequest
{
    OptionSet = new OptionSetMetadata
    {
        DisplayName = new Label("Updated Option Set", _languageCode),
        Name = _globalOptionSetName,
        IsGlobal = true
    }
};

svc.Execute(updateOptionSetRequest);

//Publish the OptionSet
PublishXmlRequest pxReq1 = new PublishXmlRequest { ParameterXml = String.Format("<importexportxml><optionsets><optionset>{0}</optionset></optionsets></importexportxml>", _globalOptionSetName) };
svc.Execute(pxReq1);

Reihenfolgeoptionen

Das folgende Codebeispiel zeigt, wie Sie die Optionen einer globalen Auswahlmöglichkeit mit OrderOptionRequest sortieren können:

// Change the order of the original option's list.
// Use the OrderBy (OrderByDescending) linq function to sort options in
// ascending (descending) order according to label text.
// For ascending order use this:
var updateOptionList =
    optionList.OrderBy(x => x.Label.LocalizedLabels[0].Label).ToList();

// For descending order use this:
// var updateOptionList =
//      optionList.OrderByDescending(
//      x => x.Label.LocalizedLabels[0].Label).ToList();

// Create the request.
OrderOptionRequest orderOptionRequest = new OrderOptionRequest
{
    // Set the properties for the request.
    OptionSetName = _globalOptionSetName,
    // Set the changed order using Select linq function
    // to get only values in an array from the changed option list.
    Values = updateOptionList.Select(x => x.Value.Value).ToArray()
};

// Execute the request
svc.Execute(orderOptionRequest);

//Publish the OptionSet
PublishXmlRequest pxReq4 = new PublishXmlRequest {
ParameterXml = String.Format("<importexportxml><optionsets><optionset>{0}</optionset></optionsets></importexportxml>", _globalOptionSetName)
};
svc.Execute(pxReq4);

Abrufen einer globalen Auswahlmöglichkeit

Das folgende Codebeispiel zeigt, wie Sie alle globalen Auswahlmöglichkeiten mit RetrieveAllOptionSetsRequest abrufen:

// Use RetrieveAllOptionSetsRequest to retrieve all global option sets.
// Create the request.
RetrieveAllOptionSetsRequest retrieveAllOptionSetsRequest =
    new RetrieveAllOptionSetsRequest();

// Execute the request
RetrieveAllOptionSetsResponse retrieveAllOptionSetsResponse =
    (RetrieveAllOptionSetsResponse)svc.Execute(
    retrieveAllOptionSetsRequest);

// Now you can use RetrieveAllOptionSetsResponse.OptionSetMetadata property to
// work with all retrieved option sets.
if (retrieveAllOptionSetsResponse.OptionSetMetadata.Count() > 0)
{
    Console.WriteLine("All the global option sets retrieved as below:");
    int count = 1;
    foreach (OptionSetMetadataBase optionSetMetadata in
        retrieveAllOptionSetsResponse.OptionSetMetadata)
    {
        Console.WriteLine("{0} {1}", count++,
            (optionSetMetadata.DisplayName.LocalizedLabels.Count >0)? optionSetMetadata.DisplayName.LocalizedLabels[0].Label : String.Empty);
    }
}

Eine globale Auswahl löschen

Das folgende Codebeispiel zeigt, wie Sie überprüfen, ob eine globale Auswahlmöglichkeit von einer anderen Lösungskomponente verwendet wird, indem Sie die Nachricht RetrieveDependentComponents verwenden (RetrieveDependentComponents Function oder RetrieveDependentComponentsRequest). Außerdem zeigt es, wie Sie es mit der Nachricht DeleteOptionSet löschen (für SDK für .NET verwenden Sie DeleteOptionSetRequest):

// Create the request to see which components have a dependency on the
// global option set.
RetrieveDependentComponentsRequest dependencyRequest =
    new RetrieveDependentComponentsRequest
    {
        ObjectId = _optionSetId,
        ComponentType = (int)componenttype.OptionSet
    };

RetrieveDependentComponentsResponse dependencyResponse =
    (RetrieveDependentComponentsResponse)svc.Execute(
    dependencyRequest);

// Here you would check the dependencyResponse.EntityCollection property
// and act as appropriate. However, we know there is exactly one
// dependency so this example deals with it directly and deletes
// the previously created attribute.
DeleteAttributeRequest deleteAttributeRequest =
    new DeleteAttributeRequest
{
    EntityLogicalName = Contact.EntityLogicalName,
    LogicalName = "sample_examplepicklist"
};

svc.Execute(deleteAttributeRequest);

Console.WriteLine("Referring attribute deleted.");

// Finally, delete the global option set. Attempting this before deleting
// the picklist above will result in an exception being thrown.
DeleteOptionSetRequest deleteRequest = new DeleteOptionSetRequest
{
    Name = _globalOptionSetName
};

svc.Execute(deleteRequest);

Siehe auch

Erstellen und Aktualisieren von Auswahlmöglichkeiten mit der Web-API

Hinweis

Können Sie uns Ihre Präferenzen für die Dokumentationssprache mitteilen? Nehmen Sie an einer kurzen Umfrage teil. (Beachten Sie, dass diese Umfrage auf Englisch ist.)

Die Umfrage dauert etwa sieben Minuten. Es werden keine personenbezogenen Daten erhoben. (Datenschutzbestimmungen).