2009-09-03 16 views
0

私のOutlookでアドインI次の基準を持っている予定の私のデフォルトのカレンダーをフィルタリングすることができるようにしたい: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ビュー=(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();