Получение элементов календаря Outlook в виде таблицы в ASP.NET - PullRequest
0 голосов
/ 02 января 2019

Я пытаюсь получить элементы календаря 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>

Ответы [ 2 ]

0 голосов
/ 03 января 2019

Это решило мою проблему:

dt.Rows.Add(new Object[] { item.Subject, item.Start.Date }); 
tblCalendar.DataBind();`
0 голосов
/ 03 января 2019

Код должен выглядеть так:

foreach (Microsoft.Office.Interop.Outlook.AppointmentItem item in outlookCalendarItems)
{
    DataRow row = calendardata.NewRow();
    row["Subject"] = item.Subject;
    row["StartDate"] = item.Start.Date;
}
tblCalendar.DataSource = calendardata;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...