Outlook加载项VSTO DASL问题

时间:2009-09-03 10:12:45

标签: c# vsto add-in outlook-2007

在我的Outlook加载项中,我希望能够过滤具有以下条件的约会的默认日历:

  1. 全天活动=真
  2. 提醒设置= true
  3. 我已经找到了如何使用DASL搜索这些项目,但如何让日历视图显示这些过滤结果?

    这是我到目前为止的代码:

    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???
    }
    

    我现在有一组约会。如何让日历显示它们?

1 个答案:

答案 0 :(得分:1)

任何人都应该要求答案:

  1. 将查询构建为字符串过滤器。
  2. 将其作为过滤器应用于日历 文件夹中。

    Outlook.CalendarView view =(Outlook.CalendarView)Application.ActiveExplorer()。CurrentView; filter =“\”urn:schemas:calendar:alldayevent \“= 1 AND \”http://schemas.microsoft.com/mapi/id/ {00062008-0000-0000-C000-000000000046} / 8503000b \“= 1”;

    view.Filter = filter; view.Apply();