Пошаговое руководство. Создание веб-части для SharePoint с помощью конструктора
Веб-части позволяют непосредственно изменять содержимое, внешний вид и поведение страниц сайта SharePoint с помощью браузера.В этом пошаговом руководстве показано, как создать визуально с помощью шаблона проекта веб-части SharePoint Визуальная веб-часть в Visual Studio.
Веб-часть отображает представление месячного календаря и флажок для каждого списка календаря на сайте.Пользователи могут выбирать, какие списки календаря включить в представление месячного календаря, устанавливая нужные флажки.
В данном пошаговом руководстве рассмотрены следующие задачи:
Создание веб-части с помощью шаблона проекта Визуальная веб-часть.
Разработка веб-части с использованием конструктора Visual Web Developer в Visual Studio.
Добавление кода для обработки событий элементов управления в веб-части.
Тестирование веб-части в SharePoint.
Примечание
Отображаемые на компьютере имена или расположения некоторых элементов пользовательского интерфейса Visual Studio могут отличаться от указанных в следующих инструкциях.Эти элементы определяются используемым выпуском Visual Studio и его параметрами.Дополнительные сведения см. в разделе Параметры Visual Studio.
Обязательные компоненты
Ниже приведены компоненты, необходимые для выполнения данного пошагового руководства.
Поддерживаемые выпуски Microsoft Windows и SharePoint.Дополнительные сведения см. в разделе Требования по разработке решений SharePoint;
Visual Studio Professional или выпуск Visual Studio Application Lifecycle Management (ALM).
Создание проекта веб-части
Сначала создайте проект веб-части с использованием шаблона проекта Визуальная веб-часть.
Создание проекта визуальной веб-части
Запустите Visual Studio, используя параметр Запуск от имени администратора.
В строке меню выберите Файл, Создать, Проект.Если интегрированная среда разработки установлена для использования параметров разработки Visual Basic в строке меню выберите Файл, Создать проект.
Откроется диалоговое окно Новый проект.
В диалоговом окне Создать проект под или *** Visual C# *** или Visual Basic разверните узел SharePoint, а затем выберите узел 2010.
В панели Установленные шаблоны Visual Studio выберите шаблон Визуальная веб-часть SharePoint 2010, а затем нажмите кнопку ОК.
Появится окно Мастер настройки SharePoint.С помощью этого мастера можно указать сайт, который будет использоваться для отладки проекта и уровень доверия решения.
В разделе Какова степень доверия для этого решения SharePoint? выберите переключатель Развернуть как решение фермы.
Нажмите кнопку Готово для принятия по умолчанию локальный сайт SharePoint.
Разработка веб-части
Разработка веб-части путем добавления элементов управления из Панель элементов в область пользовательского элемента управления.
Разработка структуры веб-части
В визуальном конструкторе для разработчиков через интернет выберите вкладку Разработка чтобы переключиться в представление конструирования.
В строке меню выберите Вид, Панель элементов.
В узле СтандартнаяПанель элементов выберите управление CheckBoxList а затем выполните одно из следующих действий:
Открыть контекстное меню для управления CheckBoxList и выберите Копировать выберите первая линия в конструкторе открыть контекстное меню для линии, а затем выберите Вставить.
Перетащите элемент управления CheckBoxList из Панель элементов и подключите его к первой линии в конструкторе.
Повторяющиеся предыдущий шаг, но переместите кнопку к следующему линии конструктора.
В конструкторе выберите кнопку button1.
В строке меню выберите Вид, Окно свойств.
Будет открыто окно Свойства.
В свойстве Текст кнопки введите обновление.
Обработка событий элементов управления в веб-части
Добавьте код, который позволяет пользователю добавлять календари в представление главного календаря.
Обработка событий элементов управления в веб-части
Выполните одно из следующих действий.
В конструкторе дважды щелкните кнопку Обновить.
В окне Свойства для кнопки Обновить, нажмите кнопку События.В свойстве ЩелчокButton1_Click, вставки, а затем выберите входной ключ.
В редакторе кода откроется файл кода пользовательского элемента управления и появится обработчик событий Button1_Click.Далее добавим код к этому обработчику событий.
Добавьте следующие операторы в верхнюю часть файла кода пользовательского элемента управления.
Imports Microsoft.SharePoint Imports Microsoft.SharePoint.WebControls
using Microsoft.SharePoint; using Microsoft.SharePoint.WebControls;
Добавьте следующую строку кода в класс VisualWebPart1.Этот код объявляет элемент управления представлением месячного календаря.
Private MonthlyCalendarView1 As MonthlyCalendarView
private MonthlyCalendarView MonthlyCalendarView1;
Замените метод Page_Load класса VisualWebPart1 на следующий код.Этот код выполняет следующие задачи:
Добавляет представление месячного календаря в пользовательский элемент управления.
Добавляет флажок для каждого списка календаря на сайте.
Задает шаблон для каждого типа элемента, отображающегося в представлении календаря.
Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load MonthlyCalendarView1 = New MonthlyCalendarView() Me.Controls.Add(MonthlyCalendarView1) Dim items As New SPCalendarItemCollection() Dim thisWeb As SPWeb = SPControl.GetContextWeb(Context) If CheckBoxList1.Items.Count = 0 Then Dim listItem As SPList For Each listItem In thisWeb.Lists If listItem.BaseTemplate = SPListTemplateType.Events Then CheckBoxList1.Items.Add(New ListItem(listItem.Title)) End If Next listItem End If MonthlyCalendarView1.ItemTemplateName = "CalendarViewMonthItemTemplate" MonthlyCalendarView1.ItemAllDayTemplateName = "CalendarViewMonthItemAllDayTemplate" MonthlyCalendarView1.ItemMultiDayTemplateName = "CalendarViewMonthItemMultiDayTemplate" End Sub
protected void Page_Load(object sender, EventArgs e) { MonthlyCalendarView1 = new MonthlyCalendarView(); this.Controls.Add(MonthlyCalendarView1); SPCalendarItemCollection items = new SPCalendarItemCollection(); SPWeb thisWeb = SPControl.GetContextWeb(Context); if (CheckBoxList1.Items.Count == 0) { foreach (SPList listItem in thisWeb.Lists) { if (listItem.BaseTemplate == SPListTemplateType.Events) { CheckBoxList1.Items.Add(new ListItem(listItem.Title)); } } } MonthlyCalendarView1.ItemTemplateName = "CalendarViewMonthItemTemplate"; MonthlyCalendarView1.ItemAllDayTemplateName = "CalendarViewMonthItemAllDayTemplate"; MonthlyCalendarView1.ItemMultiDayTemplateName = "CalendarViewMonthItemMultiDayTemplate"; }
Замените метод Button1_Click класса VisualWebPart1 на следующий код.Этот код добавляет элементы из каждого выбранного календаря в представление главного календаря.
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click Dim items As New SPCalendarItemCollection() Dim thisWeb As SPWeb = SPControl.GetContextWeb(Context) Dim item As ListItem For Each item In CheckBoxList1.Items If item.Selected = True Then Dim calendarList As SPList = thisWeb.Lists(item.Text) Dim dtStart As DateTime = DateTime.Now.AddDays(-7) Dim dtEnd As DateTime = dtStart.AddMonths(1).AddDays(7) Dim query As New SPQuery() query.Query = [String].Format("<Query>" + "<Where><And>" + _ "<Geq><FieldRef Name=""{0}"" />" + _ "<Value Type=""DateTime"">{1}</Value></Geq>" + _ "<Leq><FieldRef Name=""{0}"" />" + _ "<Value Type=""DateTime"">{2}</Value></Leq>" + _ "</And></Where><OrderBy><FieldRef Name=""{0}"" /></OrderBy>" + _ "</Query>", "Start Time", dtStart.ToShortDateString(), dtEnd.ToShortDateString()) Dim listItem As SPListItem For Each listItem In calendarList.GetItems(query) Dim calItem As New SPCalendarItem() With calItem .ItemID = listItem("ID").ToString() .Title = listItem("Title").ToString() .CalendarType = Convert.ToInt32(SPCalendarType.Gregorian) .StartDate = CType(listItem("Start Time"), DateTime) .ItemID = listItem.ID.ToString() .WorkSpaceLink = [String].Format("/Lists/{0}/DispForm.aspx", calendarList.Title) .DisplayFormUrl = [String].Format("/Lists/{0}/DispForm.aspx", calendarList.Title) .EndDate = CType(listItem("End Time"), DateTime) .Description = listItem("Description").ToString() End With If Not (listItem("Location") Is Nothing) Then calItem.Location = listItem("Location").ToString() End If items.Add(calItem) Next listItem MonthlyCalendarView1.DataSource = items End If Next item End Sub
protected void Button1_Click(object sender, EventArgs e) { SPCalendarItemCollection items = new SPCalendarItemCollection(); SPWeb thisWeb = SPControl.GetContextWeb(Context); foreach (ListItem item in CheckBoxList1.Items) { if (item.Selected == true) { SPList calendarList = thisWeb.Lists[item.Text]; DateTime dtStart = DateTime.Now.AddDays(-7); DateTime dtEnd = dtStart.AddMonths(1).AddDays(7); SPQuery query = new SPQuery(); query.Query = String.Format( "<Query>" + "<Where><And>" + "<Geq><FieldRef Name=\"{0}\" />" + "<Value Type=\"DateTime\">{1}</Value></Geq>" + "<Leq><FieldRef Name=\"{0}\" />" + "<Value Type=\"DateTime\">{2}</Value></Leq>" + "</And></Where><OrderBy><FieldRef Name=\"{0}\" /></OrderBy>" + "</Query>", "Start Time", dtStart.ToShortDateString(), dtEnd.ToShortDateString()); foreach (SPListItem listItem in calendarList.GetItems(query)) { SPCalendarItem calItem = new SPCalendarItem(); calItem.ItemID = listItem["ID"].ToString(); calItem.Title = listItem["Title"].ToString(); calItem.CalendarType = Convert.ToInt32(SPCalendarType.Gregorian); calItem.StartDate = (DateTime)listItem["Start Time"]; calItem.ItemID = listItem.ID.ToString(); calItem.WorkSpaceLink = String.Format( "/Lists/{0}/DispForm.aspx", calendarList.Title); calItem.DisplayFormUrl = String.Format( "/Lists/{0}/DispForm.aspx", calendarList.Title); calItem.EndDate = (DateTime)listItem["End Time"]; calItem.Description = listItem["Description"].ToString(); if (listItem["Location"] != null) { calItem.Location = listItem["Location"].ToString(); } items.Add(calItem); } MonthlyCalendarView1.DataSource = items; } } }
Тестирование веб-части
При запуске проекта открывается сайт SharePoint.Веб-часть автоматически добавляется в коллекцию веб-частей в SharePoint.Чтобы протестировать этот проект можно выполнить следующие задачи:
Добавьте событие в каждый из двух отдельных списков календарей.
Добавьте веб-часть на страницу веб-части.
Укажите списки для включения в представление месячного календаря.
Добавление событий в списки календарей на сайте
В Visual Studio выберите ключ F5.
Открытые сайта SharePoint, а порог панели быстрого запуска Microsoft SharePoint Foundation 2010 отображаются на странице.
В панели быстрого запуска под Списки выберите ссылку Календарь.
Отобразится страница Календарь.
Выберите вкладку События, а затем выберите Новое событие на ленте.
В окне Название, событие входа по умолчанию в календаре, а затем нажмите кнопку Сохранить.
В меню Действия сайта выберите команду Дополнительно.
На странице Создать выберите тип Календарь, назовите календарь, а затем нажмите кнопку Создать.
Отобразится страница Пользовательский календарь.
Добавьте событие к настраиваемому календарю, назовите событие события в пользовательском календаре, а затем нажмите кнопку Сохранить.
Добавление веб-части на страницу веб-части
В меню Действия сайта выберите команду Дополнительно.
На странице Создать выберите тип *** страница веб-частей ***, а затем нажмите кнопку Создать.
На странице *** Откроется страница веб-частей ***, назовите страницу SampleWebPartPage.aspx, а затем нажмите кнопку Создать.
Отобразится страница веб-части.
Выберите любую зону на страницу " веб-часть ".
В верхней части страницы выберите вкладку Вставить, а затем нажмите кнопку Веб-часть.
Выберите папку Другой выберите " веб-часть " VisualWebPart1, а затем нажмите кнопку Добавить.
Веб-часть отобразится на странице.В веб-части отобразятся следующие элементы управления.
Представление месячного календаря.
Кнопка Обновить.
Флажок Календарь.
Флажок Пользовательский календарь.
Указать списки для включения в представление месячного календаря
В веб-части, укажите календарей, которые необходимо включить в представление месячного календаря, а затем нажмите кнопку Обновить.
События из всех указанных календарей отображаются в представление месячного календаря.
См. также
Задачи
Практическое руководство. Создание веб-части SharePoint
Практическое руководство. Создание веб-части SharePoint с помощью конструктора
Пошаговое руководство. Создание веб-части для SharePoint