2009-09-03 84 views
0

在我的Outlook插件我希望能够过滤我的默认日历具有以下条件的约会:Outlook插件VSTO DASL问题

  1. 全天事件=真
  2. 提醒set = true

我已经想出了如何使用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??? 
} 

我现在有约会的集合。我如何让日历显示出来?

+0

找出如何应用过滤器,但不知道如何清除过滤器! – Junto 2009-09-04 11:20:13

回答

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();

相关问题