2009-09-03 2 views
0

=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

답변

1

누구나 답변해야합니다.

  1. 쿼리를 문자열 필터로 빌드하십시오.
  2. 필터 폴더에 필터로 적용하십시오.

    Outlook.CalendarView view = (Outlook.CalendarView) Application.ActiveExplorer(). 현재보기; 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();