如何解决如何检索定期约会
| 我正在使用service.FindItems方法从交换服务器中检索约会,它不返回定期约会。它返回重复项目的第一个实例,但此后不再返回,并且约会中的IsRecurring设置为false。 这是代码:private void loadUsersAppointments(string user,int rscID)
{
// Add a search filter that searches on the body or subject.
List<SearchFilter> searchFilterCollection = new List<SearchFilter>();
searchFilterCollection.Add(new SearchFilter.IsGreaterThan(AppointmentSchema.Start,DateTime.Today.AddDays(-7)));
// Create the search filter.
SearchFilter searchFilter = new SearchFilter.SearchFilterCollection(LogicalOperator.Or,searchFilterCollection.ToArray());
CalendarView V = new CalendarView(DateTime.Today.AddDays(-7),DateTime.Today.AddMonths(1),1000);
V.PropertySet = new PropertySet(BasePropertySet.IdOnly,AppointmentSchema.Subject,AppointmentSchema.Start,AppointmentSchema.End);
V.Traversal = ItemTraversal.Shallow;
// Create a view with a page size of 50.
ItemView view = new ItemView(10000);
// Identify the Subject and DateTimeReceived properties to return.
// Indicate that the base property will be the item identifier
view.PropertySet = new PropertySet(BasePropertySet.IdOnly,AppointmentSchema.End);
// Order the search results by the DateTimeReceived in descending order.
view.OrderBy.Add(AppointmentSchema.Start,SortDirection.Descending);
// Set the traversal to shallow. (Shallow is the default option; other options are Associated and SoftDeleted.)
view.Traversal = ItemTraversal.Shallow;
// Send the request to search the Inbox and get the results.
ExchangeService service = GlobalFunc.ElevateGetBinding();
service.ImpersonatedUserId = new ImpersonatedUserId(ConnectingIdType.SmtpAddress,user+\"@works.local\");
FindItemsResults<Item> findResults = service.FindItems(WellKnownFolderName.Calendar,searchFilter,view);
List<Item> items = new List<Item>();
foreach (Microsoft.Exchange.WebServices.Data.Appointment appointment in findResults)
{
items.Add(appointment);
}
service.LoadPropertiesForItems(items,PropertySet.FirstClassProperties);
// Process each item.
foreach (Microsoft.Exchange.WebServices.Data.Appointment myItem in items)
{
DevExpress.XtraScheduler.Appointment AddAppt = new DevExpress.XtraScheduler.Appointment();
try {
if (myItem.Subject.StartsWith(\"Advisor Appointment\"))
AddAppt.LabelId = 8;
else
AddAppt.LabelId = 2;
AddAppt.Subject = myItem.Subject;
}
catch { }
try
{
}
catch (Exception ex) { MessageBox.Show(ex.Message); }
try { AddAppt.Start = myItem.Start; }
catch { }
try { AddAppt.Description = myItem.Body; }
catch { }
try { AddAppt.End = myItem.End; }
catch { }
AddAppt.ResourceId = rscID;
schStorage.Appointments.Add(AddAppt);
}
}
任何想法将不胜感激。
谢谢
解决方法
您需要使用CalendarView获取定期约会。定期约会的实例不是Exchange数据库中的真实项目。相反,当您查询特定时间范围时,Exchange会即时创建虚拟项目。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。