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


Пошаговое руководство. Создание веб-части для SharePoint с помощью конструктора

Веб-части позволяют непосредственно изменять содержимое, внешний вид и поведение страниц сайта SharePoint с помощью браузера.В этом пошаговом руководстве показано, как создать визуально с помощью шаблона проекта веб-части SharePoint Визуальная веб-часть в Visual Studio.

Веб-часть отображает представление месячного календаря и флажок для каждого списка календаря на сайте.Пользователи могут выбирать, какие списки календаря включить в представление месячного календаря, устанавливая нужные флажки.

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

  • Создание веб-части с помощью шаблона проекта Визуальная веб-часть.

  • Разработка веб-части с использованием конструктора Visual Web Developer в Visual Studio.

  • Добавление кода для обработки событий элементов управления в веб-части.

  • Тестирование веб-части в SharePoint.

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

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

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

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

Создание проекта веб-части

Сначала создайте проект веб-части с использованием шаблона проекта Визуальная веб-часть.

Создание проекта визуальной веб-части

  1. Запустите Visual Studio, используя параметр Запуск от имени администратора.

  2. В строке меню выберите Файл, Создать, Проект.Если интегрированная среда разработки установлена для использования параметров разработки Visual Basic в строке меню выберите Файл, Создать проект.

    Откроется диалоговое окно Новый проект.

  3. В диалоговом окне Создать проект под или *** Visual C# *** или Visual Basic разверните узел SharePoint, а затем выберите узел 2010.

  4. В панели Установленные шаблоны Visual Studio выберите шаблон Визуальная веб-часть SharePoint 2010, а затем нажмите кнопку ОК.

    Появится окно Мастер настройки SharePoint.С помощью этого мастера можно указать сайт, который будет использоваться для отладки проекта и уровень доверия решения.

  5. В разделе Какова степень доверия для этого решения SharePoint? выберите переключатель Развернуть как решение фермы.

  6. Нажмите кнопку Готово для принятия по умолчанию локальный сайт SharePoint.

Разработка веб-части

Разработка веб-части путем добавления элементов управления из Панель элементов в область пользовательского элемента управления.

Разработка структуры веб-части

  1. В визуальном конструкторе для разработчиков через интернет выберите вкладку Разработка чтобы переключиться в представление конструирования.

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

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

    • Открыть контекстное меню для управления CheckBoxList и выберите Копировать выберите первая линия в конструкторе открыть контекстное меню для линии, а затем выберите Вставить.

    • Перетащите элемент управления CheckBoxList из Панель элементов и подключите его к первой линии в конструкторе.

  4. Повторяющиеся предыдущий шаг, но переместите кнопку к следующему линии конструктора.

  5. В конструкторе выберите кнопку button1.

  6. В строке меню выберите Вид, Окно свойств.

    Будет открыто окно Свойства.

  7. В свойстве Текст кнопки введите обновление.

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

Добавьте код, который позволяет пользователю добавлять календари в представление главного календаря.

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

  1. Выполните одно из следующих действий.

    • В конструкторе дважды щелкните кнопку Обновить.

    • В окне Свойства для кнопки Обновить, нажмите кнопку События.В свойстве ЩелчокButton1_Click, вставки, а затем выберите входной ключ.

    В редакторе кода откроется файл кода пользовательского элемента управления и появится обработчик событий Button1_Click.Далее добавим код к этому обработчику событий.

  2. Добавьте следующие операторы в верхнюю часть файла кода пользовательского элемента управления.

    Imports Microsoft.SharePoint
    Imports Microsoft.SharePoint.WebControls
    
    using Microsoft.SharePoint;
    using Microsoft.SharePoint.WebControls;
    
  3. Добавьте следующую строку кода в класс VisualWebPart1.Этот код объявляет элемент управления представлением месячного календаря.

    Private MonthlyCalendarView1 As MonthlyCalendarView
    
    private MonthlyCalendarView MonthlyCalendarView1;
    
  4. Замените метод 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";
    }
    
  5. Замените метод 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.Чтобы протестировать этот проект можно выполнить следующие задачи:

  • Добавьте событие в каждый из двух отдельных списков календарей.

  • Добавьте веб-часть на страницу веб-части.

  • Укажите списки для включения в представление месячного календаря.

Добавление событий в списки календарей на сайте

  1. В Visual Studio выберите ключ F5.

    Открытые сайта SharePoint, а порог панели быстрого запуска Microsoft SharePoint Foundation 2010 отображаются на странице.

  2. В панели быстрого запуска под Списки выберите ссылку Календарь.

    Отобразится страница Календарь.

  3. Выберите вкладку События, а затем выберите Новое событие на ленте.

  4. В окне Название, событие входа по умолчанию в календаре, а затем нажмите кнопку Сохранить.

  5. В меню Действия сайта выберите команду Дополнительно.

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

    Отобразится страница Пользовательский календарь.

  7. Добавьте событие к настраиваемому календарю, назовите событие события в пользовательском календаре, а затем нажмите кнопку Сохранить.

Добавление веб-части на страницу веб-части

  1. В меню Действия сайта выберите команду Дополнительно.

  2. На странице Создать выберите тип *** страница веб-частей ***, а затем нажмите кнопку Создать.

  3. На странице *** Откроется страница веб-частей ***, назовите страницу SampleWebPartPage.aspx, а затем нажмите кнопку Создать.

    Отобразится страница веб-части.

  4. Выберите любую зону на страницу " веб-часть ".

  5. В верхней части страницы выберите вкладку Вставить, а затем нажмите кнопку Веб-часть.

  6. Выберите папку Другой выберите " веб-часть " VisualWebPart1, а затем нажмите кнопку Добавить.

    Веб-часть отобразится на странице.В веб-части отобразятся следующие элементы управления.

    • Представление месячного календаря.

    • Кнопка Обновить.

    • Флажок Календарь.

    • Флажок Пользовательский календарь.

Указать списки для включения в представление месячного календаря

  • В веб-части, укажите календарей, которые необходимо включить в представление месячного календаря, а затем нажмите кнопку Обновить.

    События из всех указанных календарей отображаются в представление месячного календаря.

См. также

Задачи

Практическое руководство. Создание веб-части SharePoint

Практическое руководство. Создание веб-части SharePoint с помощью конструктора

Пошаговое руководство. Создание веб-части для SharePoint

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

Создание веб-частей для SharePoint