Я пытаюсь получить элементы календаря Outlook, используя Microsoft.Office.Interop.Outlook, в таблицу gridview в ASP.NET.У меня нет проблем с получением данных в список, но мне нужно иметь их в формате таблицы gridview.
Я не получаю никаких ошибок при запуске кода, он просто не показывает никаких данных.
public void GetAllCalendarItems()
{
DataTable calendardata = new DataTable();
calendardata.Columns.Add("Subject", typeof(string));
calendardata.Columns.Add("StartDate", typeof(DateTime));
Microsoft.Office.Interop.Outlook.Application oApp = null;
Microsoft.Office.Interop.Outlook.NameSpace mapiNamespace = null;
Microsoft.Office.Interop.Outlook.MAPIFolder CalendarFolder = null;
Microsoft.Office.Interop.Outlook.Items outlookCalendarItems = null;
oApp = new Microsoft.Office.Interop.Outlook.Application();
mapiNamespace = oApp.GetNamespace("MAPI");
Recipient outlookAccount = oApp.Session.CreateRecipient("outofoffice");
CalendarFolder = mapiNamespace.GetSharedDefaultFolder(outlookAccount, OlDefaultFolders.olFolderCalendar);
outlookCalendarItems = CalendarFolder.Items;
outlookCalendarItems.IncludeRecurrences = true;
foreach (Microsoft.Office.Interop.Outlook.AppointmentItem item in outlookCalendarItems)
{
DataRow row = calendardata.NewRow();
row["Subject"] = item.Subject;
row["StartDate"] = item.Start.Date;
foreach (DataRow dr in calendardata.Rows)
{
tblCalendar.DataSource = calendardata;
tblCalendar.DataBind();
}
}
}
Вот код asp.net:
<asp:GridView ID="tblCalendar" runat="server" AutoGenerateColumns="false" CssClass="table table-bordered table-striped" Visible="true">
<RowStyle CssClass="myrow" />
<AlternatingRowStyle CssClass="myrow" />
<Columns>
<asp:BoundField DataField="Subject" HeaderText="Subject" />
<asp:BoundField DataField="StartDate" HeaderText="Start Date" />
</Columns>
</asp:GridView>