2013-02-26 11 views
5

Ho provato a utilizzare le proprietà estese sugli appuntamenti con EWS, ma non riesco a trovare gli appuntamenti di nuovo. La parte insieme di proprietà è uguale a quella mostrata in questa domanda:API gestita da Exchange Webservice - Trova elementi per proprietà estese

How to Update an Appointment from Exchange Web Service Managed API 2.0 in ASP.NET

Quando provo a recuperare la nomina, ho seguito questi esempi:

http://msdn.microsoft.com/en-us/uc14trainingcourse_5l_topic3#_Toc254008129 http://msdn.microsoft.com/en-us/library/exchange/dd633697(v=exchg.80).aspx

Ma io non ricevere mai gli appuntamenti restituiti quando effettuo una ricerca.

Ecco il codice per la ricerca:

 ItemView view = new ItemView(10); 

     // Get the GUID for the property set. 
     Guid MyPropertySetId = new Guid("{" + cGuid + "}"); 

     // Create a definition for the extended property. 
     ExtendedPropertyDefinition extendedPropertyDefinition = 
      new ExtendedPropertyDefinition(MyPropertySetId, "AppointmentID", MapiPropertyType.String); 

     view.PropertySet = 
     new PropertySet(
       BasePropertySet.IdOnly, 
       ItemSchema.Subject, 
       AppointmentSchema.Start, 
       AppointmentSchema.End, extendedPropertyDefinition); 

     SearchFilter filter = new SearchFilter.Exists(extendedPropertyDefinition); 

     FindItemsResults<Item> findResults = service.FindItems(WellKnownFolderName.Inbox, filter, 
      view); 

Qualsiasi aiuto è molto apprezzato.

Edit: Quando provo a creare la proprietà come la documentazione mostra:

http://msdn.microsoft.com/en-us/library/exchange/dd633654(v=exchg.80).aspx

Fallisce perché è una im Guid aggiungendo come valore della proprietà. : -/

Edit di nuovo: appena provato ricevendo tutti gli appuntamenti per oggi, e ottenere la proprietà dalla nomina ho appena creato, e dice lo stesso che ho conservato, senza il {}, quindi deve essere qualcosa con il filtro.

Modifica ancora una volta * Ha somthing a che fare con

ExtendedPropertyDefinition extendedProperty = new ExtendedPropertyDefinition(

se uso:

new ExtendedPropertyDefinition(
       DefaultExtendedPropertySet.Appointment, 
       "AppointmentID", 
       MapiPropertyType.String); 

Essa trova tutti gli appuntamenti con proprietà, ma se cerco per una specifica uno:

Guid MyPropertySetId = new Guid("{" + cGuid + "}"); 

ExtendedPropertyDefinition extendedProperty = 
      new ExtendedPropertyDefinition(
       MyPropertySetId, 
       "AppointmentID", 
       MapiPropertyType.String); 

Quindi non viene trovato nulla

risposta

20

ecco una SampleCode come creare un appuntamento con il customid e trovano dopo il salvataggio:

ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2007_SP1); 
     service.AutodiscoverUrl("[email protected]"); 

     ExtendedPropertyDefinition def = new ExtendedPropertyDefinition(DefaultExtendedPropertySet.PublicStrings, "AppointmenId", MapiPropertyType.String); 

     Guid testid = Guid.NewGuid(); 

     Appointment appointment = new Appointment(service); 
     appointment.Subject = "Test"; 
     appointment.Start = DateTime.Now.AddHours(1); 
     appointment.End = DateTime.Now.AddHours(2); 
     appointment.SetExtendedProperty(def, testid.ToString()); 
     appointment.Save(WellKnownFolderName.Calendar); 

     SearchFilter filter = new SearchFilter.IsEqualTo(def, testid.ToString()); 

     FindItemsResults<Item> fir = service.FindItems(WellKnownFolderName.Calendar, filter, new ItemView(10)); 

speranza che questo ti aiuta ...

+0

Grazie, provalo. – Jacob

+0

I lavori per me! Molte grazie! – Jacob

+0

il tuo benvenuto ... forse la prossima volta puoi aiutarmi;) puoi per favore impostare "è stato utile";) –

0

Si cerca nella casella di posta per gli appuntamenti. Lì non li troverai mai. Prova invece a cercare nel calendario.

+0

Sì, ero alla ricerca nella cartella errata , ma non trova ancora nulla: -/ – Jacob

+0

hmm ... forse è a causa del modo in cui crei la tua proprietàdefinizione. prova questo codice: ExtendedPropertyDefinition propdef = new ExtendedPropertyDefinition (Microsoft.Exchange.WebServices.Data.DefaultExtendedPropertySet.PublicStrings, name, MapiPropertyType.String); per aggiungere e cercare. Ho avuto alcuni problemi usando anche la guida. Questo è più facile e funziona perfettamente nel mio codice. –

0

Ecco un esempio di come guidare la proprietà di estensione e ottenere l'appuntamento in base al guid.

private static readonly PropertyDefinitionBase AppointementIdPropertyDefinition = new ExtendedPropertyDefinition(DefaultExtendedPropertySet.PublicStrings, "AppointmentID", MapiPropertyType.String); 
public static PropertySet PropertySet = new PropertySet(BasePropertySet.FirstClassProperties, AppointementIdPropertyDefinition); 


//Setting the property for the appointment 
public static void SetGuidForAppointement(Appointment appointment) 
{ 
    try 
    { 
     appointment.SetExtendedProperty((ExtendedPropertyDefinition)AppointementIdPropertyDefinition, Guid.NewGuid().ToString()); 
     appointment.Update(ConflictResolutionMode.AlwaysOverwrite, SendInvitationsOrCancellationsMode.SendToNone); 
    } 
    catch (Exception ex) 
    { 
     // logging the exception 
    } 
} 

//Getting the property for the appointment 
public static string GetGuidForAppointement(Appointment appointment) 
{ 
    var result = ""; 
    try 
    { 
     appointment.Load(PropertySet); 
     foreach (var extendedProperty in appointment.ExtendedProperties) 
     { 
      if (extendedProperty.PropertyDefinition.Name == "AppointmentID") 
      { 
       result = extendedProperty.Value.ToString(); 
      } 
     } 
    } 
    catch (Exception ex) 
    { 
    // logging the exception 
    } 
    return result; 
} 
+0

Questo è il codice che sto usando per impostare il Guid. La seconda parte recupera il guid da un appuntamento. Il mio problema è che ho bisogno di trovare l'appuntamento specifico quando ho solo il Guid. – Jacob

+0

beh, quando si trovano gli appuntamenti da alcune date ad altri, quindi si applica un caso if cercando tra loro usando il Guid che si estrae se corrisponde o meno. – BraveHeart

Problemi correlati