Пошаговое руководство. Создание страницы приложения
Страница приложения — это разновидность страницы ASP.NET.Страницы приложения находится содержимое, объединенное с главной страницей SharePoint.Дополнительные сведения см. в разделе Создание страниц приложений для SharePoint.
В данном пошаговом руководстве показано, как создать страницу приложения и отладку его с помощью локального сайта SharePoint.На этой странице отображаются все элементы, которые каждый пользователь создал или изменил на всех сайтах фермы серверов.
В данном пошаговом руководстве рассмотрены следующие задачи:
Создание проекта SharePoint.
Добавление страницы приложения в проект SharePoint.
Добавление элементов управления ASP.NET на страницу приложения.
Добавление кода, лежащего в основе элементов управления ASP.NET.
Тестирование страницы приложения.
![]() |
---|
Отображаемые на компьютере имена или расположения некоторых элементов пользовательского интерфейса Visual Studio могут отличаться от указанных в следующих инструкциях.Эти элементы определяются используемым выпуском Visual Studio и его параметрами.Дополнительные сведения см. в разделе Параметры Visual Studio. |
Обязательные компоненты
Ниже приведены компоненты, необходимые для выполнения данного пошагового руководства.
Поддерживаемые версии Windows и SharePoint.Дополнительные сведения см. в разделе Требования по разработке решений SharePoint;
Visual Studio Professional или выпуск Visual Studio Application Lifecycle Management (ALM).
Создание проекта SharePoint
Создайте пустой проект SharePoint.Впоследствии в этот проект нужно будет добавить элемент страница приложения.
Создание проекта SharePoint
Запустите Visual Studio.
Открытие диалогового окна Создать проект разверните узел Office/SharePoint, расположенный в языке, а затем выберите узел Решения SharePoint.
В области Установленные шаблоны Visual Studio выберите шаблон **Пустой проект SharePoint 2010.**Присвойте проекту имя MySharePointProject и затем нажмите кнопку ОК.
Появится окно Мастер настройки SharePoint.Этот мастер позволяет выбрать сайт для отладки проекта и уровень доверия решения.
Выберите переключатель Развернуть как решение фермы, а затем нажмите кнопку Готово, чтобы принять локального сайта SharePoint по умолчанию.
Создание страницы приложения
Чтобы создать страницу приложения, добавьте в проект элемент Страница приложения.
Создание страницы приложения
В Обозреватель решений выберите проект MySharePointProject.
В строке меню выберите Проект, Добавление нового элемента.
В диалоговом окне Добавление нового элемента выберите шаблон Страницы приложения (решение фермы только.
Назовите страницу SearchItems и затем нажмите кнопку Добавить.
Конструктор веб-разработчик визуального отображает страницу приложения в представлении Источник, где можно увидеть html-элементы страницы.Конструктор отображает разметку для нескольких элементов управления Content.Каждый элемент управления сопоставляется с элементом управления ContentPlaceHolder, определенным на главной странице приложения по умолчанию.
Разработка структуры страницы приложения
Указанный элемент страницы приложения позволяет использовать конструктор для добавления элементов управления ASP.NET на страницу приложения.Такой же конструктор используется в Visual Web Developer.Добавьте метку, список переключателей и таблицу в представление конструктора Источник, а затем задайте свойства, как при при разработке любой стандартной страницы ASP.NET.
Дополнительные сведения об использовании этого конструктора в Visual Web Developer см. в разделе Бета-версии Visual Studio 11 для сопоставления веб-содержимого.
Разработка структуры страницы приложения
В строке меню выберите Вид, Панель элементов.
В стандартном узле Панель элементов выполните одно из следующих действий:
Открыть контекстное меню для элемента Метка выберите Копировать, чтобы открыть контекстное меню для линии в системе управления содержимым PlaceHolderMain в конструкторе и выберите пункт Вставить.
Перетащите элемент Метка из Панель элементов в PlaceHolderMain в элементы управления содержимым.
Повторяющийся предыдущий шаг, чтобы добавить элемент DropDownList и элемент ТаблицаPlaceHolderMain в элемент управления содержимым.
В конструкторе измените значение атрибута Text элемента управления метками на "Показать все элементы".
В конструкторе замените элемент <asp:DropDownList> на следующий XML-код.
<asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="true" OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged"> <asp:ListItem Text="Created by me" Value="Author"></asp:ListItem> <asp:ListItem Text="Modified by me" Value="Editor"></asp:ListItem> </asp:DropDownList>
Обработка событий элементов управления на странице
Обработка элементов управления на странице приложения осуществляется так же, как на любой странице ASP.NET.В этой процедуре показана обработка события SelectedIndexChanged из раскрывающегося списка.
Обработка событий элементов управления на странице
В меню Вид выберите команду Код.
В редакторе кода открывается файл кода страницы приложения.
Добавьте следующий метод в класс SearchItems.Этот код позволяет обработать событие SelectedIndexChanged из списка DropDownList вызовом метода, создание которого описано далее в этом пошаговом руководстве.
Protected Sub DropDownList1_SelectedIndexChanged _ (ByVal sender As Object, ByVal e As EventArgs) _ Handles DropDownList1.SelectedIndexChanged SPSecurity.RunWithElevatedPrivileges(AddressOf GetItems) End Sub
protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e) { SPSecurity.RunWithElevatedPrivileges(GetItems); }
Добавьте следующие операторы в верхнюю часть файла кода страницы приложения.
Imports System.Web.UI.WebControls Imports Microsoft.SharePoint.Administration Imports System.Collections
using System.Web.UI.WebControls; using Microsoft.SharePoint.Administration; using System.Collections;
Добавьте следующий метод в класс SearchItems.Этот метод выполняет перебор всех сайтов на ферме серверов и осуществляет поиск элементов, созданных или измененных текущим пользователем.
Private Sub GetItems() Dim CurrentUser As New SPFieldUserValue _ (Me.Web, Me.Web.CurrentUser.ID, Me.Web.CurrentUser.Name) Dim ResultsList As New ArrayList() Dim ThisFarm As SPFarm = SPFarm.Local Dim Service As SPWebService = _ ThisFarm.Services.GetValue(Of SPWebService)("") Dim WebApp As SPWebApplication For Each WebApp In Service.WebApplications Dim SiteCollection As SPSite For Each SiteCollection In WebApp.Sites Dim Web As SPWeb For Each Web In SiteCollection.AllWebs Dim Lists As SPListCollection = Web.Lists Dim List As SPList For Each List In Lists Dim Item As SPListItem Try For Each Item In List.Items If Item(DropDownList1.SelectedValue).ToString() = _ CurrentUser.ToString() Then ResultsList.Add(Item) End If Next Item Catch exception As Exception 'Error in list. Move on to the next list. End Try Next List Next Web Next SiteCollection Next WebApp CreateResultsTable(ResultsList) End Sub
private void GetItems() { SPFieldUserValue currentUser = new SPFieldUserValue (this.Web, this.Web.CurrentUser.ID, this.Web.CurrentUser.Name); ArrayList resultsList = new ArrayList(); SPFarm thisFarm = SPFarm.Local; SPWebService service = thisFarm.Services.GetValue<SPWebService>(""); foreach (SPWebApplication webApp in service.WebApplications) { foreach (SPSite siteCollection in webApp.Sites) { foreach (SPWeb web in siteCollection.AllWebs) { SPListCollection lists = web.Lists; foreach (SPList list in lists) { try { foreach (SPListItem item in list.Items) { if (item[DropDownList1.SelectedValue].ToString() == currentUser.ToString()) { resultsList.Add(item); } } } catch (Exception) { // An error with the list. Move onto the next list. } } } } } CreateResultsTable(resultsList); }
Добавьте следующий метод в класс SearchItems.Этот метод отображает элементы, созданные или измененные текущим пользователем в таблице.
Private Sub CreateResultsTable(ByVal ResultsList As ArrayList) Dim CurrentList As String = "" Dim CurrentSite As String = "" Table1.Rows.Clear() Dim Item As SPListItem For Each Item In ResultsList If Item.ParentList.ParentWeb.Title <> CurrentSite Then CurrentSite = Item.ParentList.ParentWeb.Title Dim NewSiteCell As New TableCell() NewSiteCell.Text = CurrentSite Dim NewSiteRow As New TableRow() With NewSiteRow .Cells.Add(NewSiteCell) .Font.Bold = True .Font.Size = FontUnit.Larger .Font.Underline = True End With Table1.Rows.Add(NewSiteRow) End If If Item.ParentList.Title <> CurrentList Then CurrentList = Item.ParentList.Title Dim NewListCell As New TableCell() NewListCell.Text = CurrentList Dim NewListRow As New TableRow() With NewListRow .Cells.Add(NewListCell) .Font.Bold = True End With Table1.Rows.Add(NewListRow) Dim ItemHeading As New TableCell() With ItemHeading .Text = "Item" .Font.Italic = True End With Dim CreatedHeading As New TableCell() With CreatedHeading .Text = "Created" .Font.Italic = True End With Dim ModifiedHeading As New TableCell() With ModifiedHeading .Text = "Last Modified" .Font.Italic = True End With Dim HeadingRow As New TableRow() HeadingRow.Cells.Add(ItemHeading) HeadingRow.Cells.Add(CreatedHeading) HeadingRow.Cells.Add(ModifiedHeading) Table1.Rows.Add(HeadingRow) End If Dim ItemName As New TableCell() Dim ItemLink As New HyperLink() Try ItemLink.href = Item.ParentList.ParentWeb.Url & _ "/" & Item.ParentList.Forms(PAGETYPE.PAGE_DISPLAYFORM).Url & _ "?ID=" & Item.ID Catch exception As Exception ' Some items might not have a form page. Ignore the exception. End Try ItemLink.Text = Item.DisplayName ItemName.Controls.Add(ItemLink) Dim Created As New TableCell() Created.Text = Item("Created").ToString() Dim Modified As New TableCell() Modified.Text = Item("Modified").ToString() Dim DataRow As New TableRow() DataRow.Cells.Add(ItemName) DataRow.Cells.Add(Created) DataRow.Cells.Add(Modified) Table1.Rows.Add(DataRow) Next Item End Sub
private void CreateResultsTable(ArrayList resultsList) { string currentList = ""; string currentSite = ""; Table1.Rows.Clear(); foreach (SPListItem item in resultsList) { if (item.ParentList.ParentWeb.Title != currentSite) { currentSite = item.ParentList.ParentWeb.Title; TableCell newSiteCell = new TableCell(); newSiteCell.Text = currentSite; TableRow newSiteRow = new TableRow(); newSiteRow.Cells.Add(newSiteCell); newSiteRow.Font.Bold = true; newSiteRow.Font.Size = FontUnit.Larger; newSiteRow.Font.Underline = true; Table1.Rows.Add(newSiteRow); } if (item.ParentList.Title != currentList) { currentList = item.ParentList.Title; TableCell newListCell = new TableCell(); newListCell.Text = currentList; TableRow newListRow = new TableRow(); newListRow.Cells.Add(newListCell); newListRow.Font.Bold = true; Table1.Rows.Add(newListRow); TableCell itemHeading = new TableCell(); itemHeading.Text = "Item"; itemHeading.Font.Italic = true; TableCell createdHeading = new TableCell(); createdHeading.Text = "Created"; createdHeading.Font.Italic = true; TableCell modifiedHeading = new TableCell(); modifiedHeading.Text = "Last Modified"; modifiedHeading.Font.Italic = true; TableRow headingRow = new TableRow(); headingRow.Cells.Add(itemHeading); headingRow.Cells.Add(createdHeading); headingRow.Cells.Add(modifiedHeading); Table1.Rows.Add(headingRow); } TableCell itemName = new TableCell(); HyperLink itemLink = new HyperLink(); try { itemLink.href = item.ParentList.ParentWeb.Url + "/" + item.ParentList.Forms[PAGETYPE.PAGE_DISPLAYFORM].Url + "?ID=" + item.ID; } catch (Exception) { // Some items might not have a form page. Ignore the exception. } itemLink.Text = item.DisplayName; itemName.Controls.Add(itemLink); TableCell created = new TableCell(); created.Text = item["Created"].ToString(); TableCell modified = new TableCell(); modified.Text = item["Modified"].ToString(); TableRow dataRow = new TableRow(); dataRow.Cells.Add(itemName); dataRow.Cells.Add(created); dataRow.Cells.Add(modified); Table1.Rows.Add(dataRow); } }
Тестирование страницы приложения
При выполнении проекта открывается сайт SharePoint и отображается страница приложения.
Тестирование страницы приложения
В Обозреватель решений откройте контекстное меню страницы приложения, а затем выберите Назначить автозапускаемым проектом.
Выберите ключ F5.
Откроется сайт SharePoint.
На странице выберите параметр Я являюсь автором последнего изменения.
После обновления страницы приложения и отображаются все элементы, которые были изменены на всех сайтах фермы серверов.
На странице Я являюсь автором выберите в списке.
После обновления страницы приложения на ней отображаются все элементы, которые были созданы на всех сайтах фермы серверов.
Следующие действия
Дополнительные сведения о страницах приложений SharePoint см. в разделе Создание страниц приложений для SharePoint.
Дополнительные сведения о разработке содержимого страниц SharePoint с помощью Visual Web Designer см. в следующих разделах.
См. также
Задачи
Практическое руководство. Создание страницы приложения