Freigeben über


Exportieren von Menübanddefinitionen

Hinweis

In diesem Thema geht es um klassische Befehle.

Es gibt eine neue Möglichkeit, Befehle zu definieren. Siehe Moderne Befehlsübersicht (Vorschauversion)

Wenn Sie Änderungen am Standard-RibbonXml effektiv definieren wollen, müssen Sie die RibbonXml-Daten referenzieren können, die diese Menübänder definieren.

Zugriff auf die Menübanddefinitionen für Ihre Organisation

Wenn für Ihre Organisation das Menüband geändert wurde, sollten Sie die aktuellen Definitionen exportieren, wenn mit den benutzerdefinierten Menübandelementen arbeiten möchten. Verwenden Sie dazu das Beispiel Export-Band xml.

Zugriff auf die Menüband-Standarddaten

Die Standarddefinitionen von Menübändern für modellbasierte Apps können unter Microsoft Downloads heruntergeladen werden: ExportedRibbonXml.zip heruntergeladen werden.

Die applicationRibbon.xml-Datei enthält die Definition der Kernanwendungsmenübänder.

Der übrigen Dateien enthalten die Definitionen, die von Tabellen verwendet werden, die Menübanddefinitionen haben, die von der Tabellenvorlage abweichen. Jede Datei wird gemäß dem Namen der Tabelle benannt: logischer Tabellenname + Band.xml.

Diese Dateien repräsentieren die Ausgabe zweier Meldungen mit den Beispiel: Export von Menübanddefinitionen:

RetrieveApplicationRibbonRequest
Diese Meldung ruft die Menübänder der Kernanwendung ab, einschließlich der Tabellenvorlage.

RetrieveEntityRibbonRequest
Diese Meldung ruft die Menübanddefinition ab, die für eine bestimmte Tabelle verwendet wird.

Dekomprimieren der Menübanddaten

Die Menübanddaten werden als komprimierte Datei exportiert. Um die Datei in XML zu dekomprimieren, müssen Sie die Klasse System.IO.Packaging.ZipPackage verwenden. Das folgende Beispiel ist eine Hilfsmethode, die im SDK-Beispiel verwendet wird, um die Datei zu dekomprimieren.

/// <summary>
/// A helper method that decompresses the Ribbon data returned
/// </summary>
/// <param name="data">The compressed ribbon data</param>
/// <returns></returns>
public byte[] unzipRibbon(byte[] data)
{
System.IO.Packaging.ZipPackage package = null;
MemoryStream memStream = null;

memStream = new MemoryStream();
memStream.Write(data, 0, data.Length);
package = (ZipPackage)ZipPackage.Open(memStream, FileMode.Open);

ZipPackagePart part = (ZipPackagePart)package.GetPart(new Uri("/RibbonXml.xml", UriKind.Relative));
using (Stream strm = part.GetStream())
{
 long len = strm.Length;
 byte[] buff = new byte[len];
 strm.Read(buff, 0, (int)len);
 return buff;
}
}

Abrufen der Anwendungsmenübanddaten

Das Anwendungsmenüband kann mithilfe von RetrieveApplicationRibbonRequest wie im folgenden Beispiel angezeigt abgerufen werden.

//Retrieve the Application Ribbon
var appribReq = new RetrieveApplicationRibbonRequest();
var appribResp = (RetrieveApplicationRibbonResponse)service.Execute(appribReq);

System.String applicationRibbonPath = Path.GetFullPath(exportFolder + "\\applicationRibbon.xml");
File.WriteAllBytes(applicationRibbonPath, unzipRibbon(appribResp.CompressedApplicationRibbonXml));

Abrufen von Tabellenbändern

Um die Menübanddefinition für Tabellen abzurufen, können Sie einfach den Namen der Tabelle als Parameter in RetrieveEntityRibbonRequest einschließen.

Zum Abrufen der Menübanddefinitionen für alle Tabeööem, die das Menüband unterstützen, benötigen Sie eine Liste der Systementitäten, die Menübanddefinitionen haben, die von der Tabellenmenübandvorlage abweichen. Das folgende Beispiel zeigt eine Reihe aller Systementabellen, die Menübanddefinitionen haben.

//This array contains all of the system tables that use the ribbon.
public System.String[] entitiesWithRibbons = {"account",
"activitymimeattachment",
"activitypointer",
"appointment",
"bulkoperation",
"calendar",
"campaign",
"campaignactivity",
"campaignresponse",
"competitor",
"connection",
"contact",
"contract",
"contractdetail",
"convertrule",
"convertruleitem",
"customeraddress",
"discount",
"discounttype",
"email",
"emailserverprofile",
"entitlement",
"entitlementchannel",
"entitlementtemplate",
"entitlementtemplatechannel",
"fax",
"goal",
"goalrollupquery",
"importfile",
"incident",
"invoice",
"invoicedetail",
"kbarticle",
"kbarticlecomment",
"lead",
"letter",
"list",
"listmember",
"mailbox",
"metric",
"opportunity",
"opportunityproduct",
"partnerapplication",
"phonecall",
"postfollow",
"pricelevel",
"product",
"productpricelevel",
"queue",
"queueitem",
"quote",
"quotedetail",
"recurringappointmentmaster",
"report",
"rollupfield",
"routingrule",
"routingruleitem",
"salesliterature",
"salesliteratureitem",
"salesorder",
"salesorderdetail",
"service",
"serviceappointment",
"sharepointdocument",
"sharepointdocumentlocation",
"sharepointsite",
"site",
"sla",
"slaitem",
"socialactivity",
"socialprofile",
"systemuser",
"task",
"team",
"teamtemplate",
"territory",
"uom",
"uomschedule",
"userquery"};

Das folgende Beispiel zeigt, wie Sie die Menübanddefinitionen für einen Satz von Tabellen abrufen.

//Retrieve system table Ribbons
var entRibReq = new RetrieveEntityRibbonRequest() { RibbonLocationFilter = RibbonLocationFilters.All };
foreach (System.String entityName in entitiesWithRibbons)
{
 entRibReq.EntityName = entityName;
 var entRibResp = (RetrieveEntityRibbonResponse)service.Execute(entRibReq);

 System.String entityRibbonPath = Path.GetFullPath(exportFolder + "\\" + entityName + "Ribbon.xml");
 File.WriteAllBytes(entityRibbonPath, unzipRibbon(entRibResp.CompressedEntityXml));
 //Write the path where the file has been saved.
 Console.WriteLine(entityRibbonPath);
}

Alle benutzerdefinierten Tabellen unterstützen auch Menübandanpassungen. Zum Anzeigen einer Liste von benutzerdefinierten Tabellen verwenden Sie die RetrieveAllEntitiesRequest, und rufen Sie die Namen von benutzerdefinierten Tabellen ab. Das folgende Beispiel zeigt, wie Sie die Menübanddefinitionen für alle benutzerdefinierten Tabellen abrufen.

//Check for custom tables
 var raer = new RetrieveAllEntitiesRequest() { EntityFilters = EntityFilters.Entity };
 var resp = (RetrieveAllEntitiesResponse)service.Execute(raer);
 foreach (EntityMetadata em in resp.EntityMetadata)
 {
  if (em.IsCustomEntity == true && em.IsIntersect == false)
  {
   entRibReq.EntityName = em.LogicalName;
   var entRibResp = (RetrieveEntityRibbonResponse)service.Execute(entRibReq);
   System.String entityRibbonPath = Path.GetFullPath(exportFolder + "\\" + em.LogicalName + "Ribbon.xml");
   File.WriteAllBytes(entityRibbonPath, unzipRibbon(entRibResp.CompressedEntityXml));
   //Write the path where the file has been saved.
   Console.WriteLine(entityRibbonPath);
  }
 }

Beheben von Menübandproblemen

Wenn bei Ihnen ein Problem mit einer Schaltfläche in der Menüband-Befehlsleiste auftritt, verwenden Sie diesen Fehlerbehebungsleitfaden, um das Problem zu finden und zu lösen.

Siehe auch

Anpassen des Menübands
Darstellen von Befehlsleisten und Menübändern
Exportieren, Vorbereitung der Bearbeitung und Importieren des Menübands

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).