Поделиться через


Пошаговое руководство. Создание страницы приложения

Страница приложения — это разновидность страницы ASP.NET.Страницы приложения находится содержимое, объединенное с главной страницей SharePoint.Дополнительные сведения см. в разделе Создание страниц приложений для SharePoint.

В данном пошаговом руководстве показано, как создать страницу приложения и отладку его с помощью локального сайта SharePoint.На этой странице отображаются все элементы, которые каждый пользователь создал или изменил на всех сайтах фермы серверов.

В данном пошаговом руководстве рассмотрены следующие задачи:

  • Создание проекта SharePoint.

  • Добавление страницы приложения в проект SharePoint.

  • Добавление элементов управления ASP.NET на страницу приложения.

  • Добавление кода, лежащего в основе элементов управления ASP.NET.

  • Тестирование страницы приложения.

ПримечаниеПримечание

Отображаемые на компьютере имена или расположения некоторых элементов пользовательского интерфейса Visual Studio могут отличаться от указанных в следующих инструкциях.Эти элементы определяются используемым выпуском Visual Studio и его параметрами.Дополнительные сведения см. в разделе Параметры Visual Studio.

Обязательные компоненты

Ниже приведены компоненты, необходимые для выполнения данного пошагового руководства.

Создание проекта SharePoint

Создайте пустой проект SharePoint.Впоследствии в этот проект нужно будет добавить элемент страница приложения.

Создание проекта SharePoint

  1. Запустите Visual Studio.

  2. Открытие диалогового окна Создать проект разверните узел Office/SharePoint, расположенный в языке, а затем выберите узел Решения SharePoint.

  3. В области Установленные шаблоны Visual Studio выберите шаблон **Пустой проект SharePoint 2010.**Присвойте проекту имя MySharePointProject и затем нажмите кнопку ОК.

    Появится окно Мастер настройки SharePoint.Этот мастер позволяет выбрать сайт для отладки проекта и уровень доверия решения.

  4. Выберите переключатель Развернуть как решение фермы, а затем нажмите кнопку Готово, чтобы принять локального сайта SharePoint по умолчанию.

Создание страницы приложения

Чтобы создать страницу приложения, добавьте в проект элемент Страница приложения.

Создание страницы приложения

  1. В Обозреватель решений выберите проект MySharePointProject.

  2. В строке меню выберите Проект, Добавление нового элемента.

  3. В диалоговом окне Добавление нового элемента выберите шаблон Страницы приложения (решение фермы только.

  4. Назовите страницу SearchItems и затем нажмите кнопку Добавить.

    Конструктор веб-разработчик визуального отображает страницу приложения в представлении Источник, где можно увидеть html-элементы страницы.Конструктор отображает разметку для нескольких элементов управления Content.Каждый элемент управления сопоставляется с элементом управления ContentPlaceHolder, определенным на главной странице приложения по умолчанию.

Разработка структуры страницы приложения

Указанный элемент страницы приложения позволяет использовать конструктор для добавления элементов управления ASP.NET на страницу приложения.Такой же конструктор используется в Visual Web Developer.Добавьте метку, список переключателей и таблицу в представление конструктора Источник, а затем задайте свойства, как при при разработке любой стандартной страницы ASP.NET.

Дополнительные сведения об использовании этого конструктора в Visual Web Developer см. в разделе Бета-версии Visual Studio 11 для сопоставления веб-содержимого.

Разработка структуры страницы приложения

  1. В строке меню выберите Вид, Панель элементов.

  2. В стандартном узле Панель элементов выполните одно из следующих действий:

    • Открыть контекстное меню для элемента Метка выберите Копировать, чтобы открыть контекстное меню для линии в системе управления содержимым PlaceHolderMain в конструкторе и выберите пункт Вставить.

    • Перетащите элемент Метка из Панель элементов в PlaceHolderMain в элементы управления содержимым.

  3. Повторяющийся предыдущий шаг, чтобы добавить элемент DropDownList и элемент ТаблицаPlaceHolderMain в элемент управления содержимым.

  4. В конструкторе измените значение атрибута Text элемента управления метками на "Показать все элементы".

  5. В конструкторе замените элемент <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 из раскрывающегося списка.

Обработка событий элементов управления на странице

  1. В меню Вид выберите команду Код.

    В редакторе кода открывается файл кода страницы приложения.

  2. Добавьте следующий метод в класс 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);
    
    }
    
  3. Добавьте следующие операторы в верхнюю часть файла кода страницы приложения.

    Imports System.Web.UI.WebControls
    Imports Microsoft.SharePoint.Administration
    Imports System.Collections
    
    using System.Web.UI.WebControls;
    using Microsoft.SharePoint.Administration;
    using System.Collections;
    
  4. Добавьте следующий метод в класс 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);
    
    }
    
  5. Добавьте следующий метод в класс 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 и отображается страница приложения.

Тестирование страницы приложения

  1. В Обозреватель решений откройте контекстное меню страницы приложения, а затем выберите Назначить автозапускаемым проектом.

  2. Выберите ключ F5.

    Откроется сайт SharePoint.

  3. На странице выберите параметр Я являюсь автором последнего изменения.

    После обновления страницы приложения и отображаются все элементы, которые были изменены на всех сайтах фермы серверов.

  4. На странице Я являюсь автором выберите в списке.

    После обновления страницы приложения на ней отображаются все элементы, которые были созданы на всех сайтах фермы серверов.

Следующие действия

Дополнительные сведения о страницах приложений SharePoint см. в разделе Создание страниц приложений для SharePoint.

Дополнительные сведения о разработке содержимого страниц SharePoint с помощью Visual Web Designer см. в следующих разделах.

См. также

Задачи

Практическое руководство. Создание страницы приложения

Другие ресурсы

Тип страницы _макеты приложения