2009-09-03 12 views
0

Dans mon Outlook Add-in que je veux être en mesure de filtrer mon calendrier par défaut pour les rendez-vous qui ont les critères suivants:Add-in Outlook VSTO DASL question

  1. événements journée = true
  2. rappels set = true

J'ai trouvé comment utiliser DASL pour rechercher ces éléments, mais comment obtenir l'affichage du calendrier pour afficher ces résultats filtrés?

Voici le code que j'ai jusqu'à présent:

internal class MyAppointment : Appointment 
{ 
    [OutlookItemProperty("urn:schemas:calendar:dtstart")] 
    public DateTime Start { get { return Item.Start; } } 

    [OutlookItemProperty("urn:schemas:calendar:dtend")] 
    public DateTime End { get { return Item.End; } } 

    public bool ReminderSet { get { return Item.ReminderSet; } } 

    public bool AllDayEvent { get { return Item.AllDayEvent; } } 
} 


void btnFix_Click(Microsoft.Office.Core.CommandBarButton Ctrl, ref bool CancelDefault) 
{ 
    Outlook.Folder folder = (Outlook.Folder)Globals.ThisAddIn.Application.Session.GetDefaultFolder(Microsoft.Office.Interop.Outlook.OlDefaultFolders.olFolderCalendar); 

    var appts = from item in folder.Items.AsQueryable<MyAppointment>() 
       where item.Start >= DateTime.Now 
       && item.End <= DateTime.Now.AddMonths(1) 
       && item.ReminderSet 
       && item.AllDayEvent 
       select item.Item; 

    // bind to Calendar view??? 
} 

J'ai maintenant une collection de rendez-vous. Comment puis-je obtenir le calendrier pour les montrer?

+0

Compris comment appliquer le filtre, mais pas comment effacer le filtre après! – Junto

Répondre

1

La réponse à toute personne qui l'exige :.

  1. Génère la requête sous la forme d'un filtre de chaîne.
  2. Appliquez-le comme filtre dans le dossier Calendrier .

    Outlook.CalendarView view = (Outlook.CalendarView) Application.ActiveExplorer(). CurrentView; filter = "\" urn: schémas: calendrier: alldayevent \ "= 1 AND \" http://schemas.microsoft.com/mapi/id/ {00062008-0000-0000-C000-000000000046}/8503000b \ "= 1";

    view.Filtre = filtre; view.Appliquer();