Freigeben über


Häufig gestellte Fragen: Deklarative Outlook-Lösung

Letzte Änderung: Freitag, 16. April 2010

Gilt für: SharePoint Server 2010

Inhalt dieses Artikels
Ich habe ein Szenario mit Schreibschutz für meine deklarative Lösung, und Erstellungs-, Aktualisierungs- und Löschvorgänge machen wenig Sinn. Allerdings unterstützt der externe Inhaltstyp diese Vorgänge. Kann ich sie aus dem BDC-Modell entfernen?
Wie aktualisiere ich den Cache in einer Codeaktion?
Welches Symbolformat muss an den verschiedenen Speicherorten verwendet werden? Welche Dateiformate sind zulässig und welche Größen werden erwartet?
Wie kann ich erreichen, dass für meinen Aufgabentyp ausschließlich eine benutzerdefinierte Ansicht geladen wird? Wie es aussieht, wird die Ansicht immer wieder auf die Standardansicht zurückgesetzt.
Kann ich das Standard-Outlook-Formular vollständig durch ein InfoPath-Form ersetzen?
Kann ich in einer deklarativen Outlook-Lösung dem Menüband Code zuordnen?
Kann ich den Herausgeber meiner Lösung aktualisieren?
Wie kann ein benutzerdefiniertes Part für externe Daten in einem Layout in einer deklarativen Outlook-Lösung mit anderen Teilen desselben Layouts kommunizieren?

In diesem Thema werden einige häufig gestellte Fragen zu anspruchsvolleren deklarativen Outlook-Lösungen beantwortet.

Ich habe ein Szenario mit Schreibschutz für meine deklarative Lösung, und Erstellungs-, Aktualisierungs- und Löschvorgänge machen wenig Sinn. Allerdings unterstützt der externe Inhaltstyp diese Vorgänge. Kann ich sie aus dem BDC-Modell entfernen?

Ja, Sie können sie aus dem BDC-Modell entfernen. Außerdem können Sie für den Microsoft Outlook 2010-Ordner Schreibschutz festlegen, um die Benutzerfreundlichkeit zu erhöhen. Im Folgenden ein Beispiel für die Datei OIR.config, das zeigt, wie Sie einen Ordner auf schreibgeschützt umstellen können.

<OutlookFolder StoreType="Solution" Name="GetBug" FolderDisplayName="Bugs Under PR" NativeType="FolderTasks"  SubscriptionName="816979bb-32c7-489b-861a-3f4b61ec2c9b" FolderName="816979bb-32c7-489b-861a-3f4b61ec2c9b" CanCreate="false" CanUpdate=" false " CanDelete="false">

Wie aktualisiere ich den Cache in einer Codeaktion?

Im folgenden Beispiel wird gezeigt, wie Sie eine Cacheaktualisierung basierend auf einem bestimmten Abonnement auslösen: Codeausschnitt: Programmgesteuertes Anfordern einer Cacheaktualisierung auf dem Client.

Welches Symbolformat muss an den verschiedenen Speicherorten verwendet werden? Welche Dateiformate sind zulässig und welche Größen werden erwartet?

Die Anforderungen für Symboldateiformate und erwartete Größen werden durch das Erweiterungsschema für das Outlook-Menüband vorgegeben.

  • Symbol auf Ordnerebene: Zulässige Dateiformate: JPG, BMP, ICO oder PNG. Erforderliche Größe: 16x16 Pixel.

  • Symbol auf Elementebene: Zulässiges Dateiformat: nur ICO. Größe: beliebig.

  • Menüband-Schaltfläche: Zulässige Dateiformate: PNG, JPG, BMP oder ICO. Größe: beliebig.

Wie kann ich erreichen, dass für meinen Aufgabentyp ausschließlich eine benutzerdefinierte Ansicht geladen wird? Wie es aussieht, wird die Ansicht immer wieder auf die Standardansicht zurückgesetzt.

Geben Sie den Namen Ihrer benutzerdefinierten Ansicht in der Datei OIR.config an. Im folgenden Beispiel wird dies veranschaulicht.

<OutlookFolder Name="ContosoCustomers" FolderDisplayName="Contoso Customers" ……….>
      <Views<FolderViewDefinition Name="ContosoCustomerViewName" ViewName="ContosoCustomerView" ViewType="TableView" IsDefault="true" ViewFileName="ContosoCustomerView.ovd" />
  </Views>

Kann ich das Standard-Outlook-Formular vollständig durch ein InfoPath-Form ersetzen?

Ja, Sie können DeclarativeFormRegion + Layout + Aktion definieren, um ein Layout entweder mit einem Microsoft InfoPath 2010-Formular oder mit einem Part für externe Daten zu verwenden, um das Standard-Outlook-Formular zu ersetzen.

Ersetzen des Standard-Outlook-Formulars durch ein InfoPath-Formular

  1. Definieren Sie einen DeclarativeFormRegion-Bereich.

    <FormRegions i:type="mx:DeclarativeFormRegions" >
      <mx:DeclarativeFormRegion  Type="Replacement" InternalName="CustomerReplaceFormRegion" ShowInspectorComposeMode="true" Name="CustomReplaceFormRegion" Title="MyCustomReplaceFormRegion"/>
    </FormRegions>
    
  2. Definieren Sie eine Aktion.

    <CodeMethodAction MethodType="ShowRegionLayout" Name="ShowRegionLayoutAction">
      <Parameters>
        <ConstantParameter Name="Param1" ValueType="System.String" Value="IPLayout"/>
        <ConstantParameter Name="Param2" ValueType="System.String" Value=" ArtistReplaceFormRegion" />
      </Parameters>
    
  3. Lösen Sie die Aktion zum Zeitpunkt des Öffnens der Prüfung aus.

      <mx:ContextEventHandlers>
        <mx:ContextActivated ActionName="ShowRegionLayoutAction"/>
      </mx:ContextEventHandlers>
    
  4. Definieren Sie ein Layout.

      <Layouts xmlns="https://schemas.microsoft.com/office/2009/05/BusinessApplications/Manifest/DeclarativeExtensions">
        <Layout Name="IPLayout" LayoutFileName="IPLayout">
        </Layout>
      </Layouts>
    
  5. Erstellen Sie eine Layoutdatei, in der definiert wird, was in dem Layout angezeigt werden soll.

Kann ich in einer deklarativen Outlook-Lösung dem Menüband Code zuordnen?

Ja. Allerdings können Sie den Code in einer deklarativen Lösung standardmäßig nur mit dem OnClick-Ereignis verknüpfen. Dieses wird ausgelöst, wenn Sie auf eine Menüband-Schaltfläche klicken.

So ordnen Sie dem "OnClick"-Ereignis Code zu

  1. Definieren Sie das Menüband, wie in der folgenden Beispieldatei Ribbon.xml gezeigt.

    <customUI xmlns="https://schemas.microsoft.com/office/2006/01/customui" onLoad="OnLoad" loadImage="GetImage">
      <ribbon>
        <tabs>
          <tab id="tabIssueID" label="Team Review" getVisible="GetVisible" tag="Solution">
            <group id="IssueGroupID" label="Issue Actions" getVisible="GetVisible" tag="Context[TeamIssues.IssueGroupID]">
              <button id="AllIssueButton"
                          size="large"
                          label="All Issues"
                          onAction="OnAction"
                          image="Issue.ico"
                        getEnabled ="GetEnabled"
                        screentip="Display All Existing Issues in Task Pane"
                        tag="Action[TeamIssues.ListIssueAction]"
                      />
    
  2. Definieren Sie in der Datei OIR.config eine Aktion.

    <mx:CodeMethodAction MethodType="Custom" Name ="OpenBugRibbonAction" MethodName="OpenBugMethod" QualifiedTypeName="CustomCodeActionNameSpace.CustomCodeActionClassName, CustomCodeActionAssemblyName, Version=1.0.0.0, Culture=neutral, PublicKeyToken=3c6b236b1e85d97a">
      <mx:Parameters>
        <mx:ExpressionParameter Name="p1" EntityViewInstanceReference="PrimaryEntityNameInContext" Expression="BugID"/>
      </mx:Parameters>
    </mx:CodeMethodAction>
    
  3. Implementieren Sie eine benutzerdefinierte Codeaktion.

    using System;
    using System.Text;
    using Microsoft.Office.BusinessApplications.Runtime.OIM;
     
    namespace CustomCodeActionNameSpace
    {
       public class CustomCodeActionCalssName
       {
            public void CustomCodeActionMethod(params object[] parameters)
            {
                //BCS Client Runtime passes in the Current Entity Instance as First parameter by default.
                 IEntityInstance iei = parameters[0] as IEntityInstance;
     
                // Other parameters are passed in based on the configuration within oir.config.
                // Process the Action based on parameters.
            }
        }
    }
    
HinweisHinweis

Wenn Sie einen benutzerdefinierten Menüband-Manager verwenden, kann Ihre Lösung auf zusätzliche Ereignisse in Bezug auf das Menüband lauschen.

Kann ich den Herausgeber meiner Lösung aktualisieren?

Der Herausgeber-Name stammt aus Ihrem Zertifikat. Die Lösung muss mit einem Zertifikat signiert werden, das von einer vertrauenswürdigen Zertifizierungsstelle ausgestellt wird. Aufgrund der Beschränkung bei Office-Entwicklungstools für Visual Studio (siehe KB970682) muss sich das Zertifikat der Zertifizierungsstelle im Zertifikatspeicher Vertrauenswürdige Stammzertifizierungsstellen des Clients befinden.

Wie kann ein benutzerdefiniertes Part für externe Daten in einem Layout in einer deklarativen Outlook-Lösung mit anderen Teilen desselben Layouts kommunizieren?

Rufen Sie this.Parent.Parent auf, um das Layout des Parts für externe Daten abzurufen, und durchsuchen und vergleichen Sie alle untergeordneten Elemente in diesem Layout, um das gewünschte Layout zu finden. Im folgenden Codeausschnitt wird veranschaulicht, wie dies geschieht.

WinFormsOBPartBase MyEDP;
ControlCollection allContainersUnderSameLayout = this.Parent.Parent.Controls;
foreach (Control container in allContainersUnderSameLayout)
{
    ControlCollection allEDPsUnderSameContainer = container.Controls;
    foreach (Control edp in allEDPsUnderSameContainer)
    {
        if (edp.Name == "MyEDPName")
        {
            MyEDP = edt as WinFormsOBPartBase;
            break;
        }
    }
}