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


Пошаговое руководство. Заполнение сетки данными из запроса LINQ

Дата последнего изменения: 9 марта 2015 г.

Применимо к: SharePoint Foundation 2010

В этом пошаговом руководстве демонстрируется использование простого запроса LINQ к SharePoint для получения выбранных полей данных из двух разных списков. Данные представлены в веб-части в виде таблицы. Общие сведения о выполнении запросов LINQ к SharePoint см. в статье Практическое руководство. Выполнение запроса с помощью LINQ to SharePoint.

Необходимые компоненты

  • Убедитесь, что путь к средству SPMetal указан в переменной среды %PATH%. Дополнительные сведения см. в разделе Добавление местоположений программ в переменную среды PATH.

  • Создайте веб-сайт Microsoft SharePoint Foundation с именем Contoso. Далее в пошаговом руководстве, в том числе в коде и разметке, предполагается использование этого имени.

  • Создайте на веб-сайте два списка с именами Сотрудники и Проекты. По умолчанию в каждом списке есть столбец Заголовок. Добавьте в списки столбцы, как показано в приведенных ниже таблицах.

    Список «Сотрудники»:

    Имя столбца

    Тип столбца

    Примечания

    Должность

    Одна строка текста.

    Команда

    Одна строка текста.

    Проект

    Поиск

    Подстановка для столбца Заголовок списка Проекты.

    Список «Проекты»:

    Имя столбца

    Тип столбца

    Примечания

    Описание

    Одна строка текста.

    Дата завершения

    Дата и время

    Основное контактное лицо

    Поиск

    Подстановка для столбца Заголовок списка Сотрудники.

  • Заполните оба списка сведениями об элементах списка. Используйте поле Заголовок списка Сотрудники для имен сотрудников. Поле Заголовок списка Проекты используйте для названий проектов. Даты завершения некоторых проектов должны отстоять от текущей менее чем на 6 месяцев, а другие — более чем на шесть месяцев.

Настройка проекта

  1. В Microsoft Visual Studio запустите проект веб-части, выбрав пункт Визуальная веб-часть в разделе SharePoint | 2010 области Установленные шаблоны диалогового окна Создание проекта. Задайте имя проекта ProjectsWithContacts и нажмите кнопку ОК. Откроется Мастер настройки SharePoint.

  2. Задайте сайт Contoso в качестве сайта отладки и укажите, что необходимо развернуть решение фермы, а не для песочницы. Нажмите кнопку Готово.

  3. В обозревателе решений щелкните правой кнопкой мыши узел Ссылки и выберите команду Добавить ссылку. На вкладке .NET диалогового окна Добавление ссылки выберите пункт Microsoft.SharePoint.Linq. (Чтобы упорядочить список компонентов по алфавиту, щелкните строку Имя компонента.) Нажмите кнопку ОК.

  4. Щелкните правой кнопкой мыши имя проекта в обозревателе решений и выберите пункт Свойства.

  5. На вкладке Приложение диалогового окна Свойства введите в поле Имя сборки значение Contoso.SharePoint.WebPartPages.ProjectsByContact, а в поле Пространство имен по умолчанию — Contoso.SharePoint.WebPartPages. В поле Целевая рабочая среда оставьте значение .NET Framework 3.5.

    Важное примечаниеВажно!

    Для проектов, основанных на любом из шаблонов в разделе SharePoint | 2010 области Установленные шаблоны, в поле Целевая рабочая среда по умолчанию задано значение .NET Framework 3.5. Не изменяйте его. Для поля Платформы решения в стандартном меню Visual Studioпо умолчанию задано значение "Любой ЦП". Его можно изменить на "x64" с помощью раскрывающегося списка Целевая платформа на вкладке Сборка диалогового окна Свойства. Дополнительные сведения о выборе см. в разделе Правильное задание конечной среды и процессора.

  6. Нажмите кнопку Сохранить все файлы на панели инструментов.

  7. Для автоматизации использования средства SPMetal добавьте в проект текстовый файл с именем Prebuild.bat.

  8. Откройте файл Prebuild.bat, если он еще не открыт. Добавьте в него указанные ниже строки.

    Echo Off
    SET SPLANGEXT=cs
    
    Echo Backing up previous version of generated code ... 
    IF NOT EXIST .\PreviousVersionGeneratedCode MkDir .\PreviousVersionGeneratedCode
    IF EXIST Contoso.%SPLANGEXT% xcopy /Y/V Contoso.%SPLANGEXT% .\PreviousVersionGeneratedCode
    
    Echo Generating code ...
    SPMetal /web:http://MyServer/Contoso /code:Contoso.%SPLANGEXT%
    

    При необходимости внесите в код следующие изменения:

    • Замените MyServer/Contoso на полный путь к веб-сайту Contoso.

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

  9. Сохраните файл, но не используйте для этого ни кнопки Сохранить или Сохранить все файлы на панели инструментов, ни команду Сохранить в меню Файл. Кодировка текстовых файлов по умолчанию в Visual Studio не совместима с системными пакетными файлами. Выберите в меню Файл пункт Сохранить Prebuild.bat как. В диалоговом окне Сохранение файла щелкните стрелку вниз рядом с кнопкой Сохранить и выберите пункт Сохранить с кодировкой. В диалоговом окне Дополнительные параметры сохранения выберите в раскрывающемся списке Кодировка пункт Юникод (UTF-8, без сигнатуры), кодовая страница 65001 и нажмите кнопку ОК. Убедитесь, что выбрана версия кодировки UTF-8 без сигнатуры.

    СоветСовет

    Если файл случайно был сохранен неправильно, откройте его, внесите незначительное изменение, например добавьте пробел, и сохраните его в правильном виде. При отсутствии изменений файл сохранен не будет.

  10. В обозревателе решений щелкните правой кнопкой мыши имя проекта. Выберите пункт Свойства и перейдите на вкладку События построения.

  11. В поле Командная строка события до построения (а не Командная строка события после построения), введите две указанные ниже строки.

    cd $(ProjectDir)
    Prebuild.bat
    

    Нажмите кнопку Сохранить все.

  12. В меню Построение выберите команду Построить решение. Будет вызван пакетный файл и, соответственно, SPMetal. SPMetal создаст файл Contoso.cs в каталоге проекта в Windows, а не в обозревателе решений. Добавьте его в проект как Существующий элемент.

    Файл Contoso.cs создается при каждом построении проекта. Хотя повторное создание файла не является обязательным для этого пошагового руководства, рекомендуется сделать это при использовании SPMetal, поскольку это гарантирует отражение в файле Contoso.cs внесенных в списки изменений, добавления новых списков на веб-сайт и удаления списков из веб-сайта.

Создания кода и разметки

  1. В обозревателе решений разверните узел VisualWebPart1 и откройте файл VisualWebPart1.webpart.

  2. Задайте для свойства Title значение "Проекты, перечисленные основным контактным лицом".

  3. Задайте для свойства Description значение «Проекты, завершающиеся в следующие 6 месяцев, перечисленные основным контактным лицом».

  4. Нажмите кнопку Сохранить на панели инструментов.

  5. Откройте файл VisualWebPart1UserControl.ascx и добавьте после существующих директив приведенную ниже разметку.

    <%@ Import Namespace="Microsoft.SharePoint.WebControls" %>
    
    <SharePoint:SPGridView id="spGridView" runat="server" AutoGenerateColumns="false">
      <HeaderStyle HorizontalAlign="Left" ForeColor="Navy" Font-Bold="true" />
      <Columns>
        <SharePoint:SPBoundField DataField="Title" HeaderText="Employee">
          <headerstyle HorizontalAlign="Left" />
        </SharePoint:SPBoundField>
        <SharePoint:SPBoundField DataField="JobTitle" HeaderText="Job Title">
          <headerstyle HorizontalAlign="Left" />
        </SharePoint:SPBoundField>
        <SharePoint:SPBoundField DataField="ProjectTitle" HeaderText="Project Title">
          <headerstyle HorizontalAlign="Left" />
        </SharePoint:SPBoundField>
        <SharePoint:SPBoundField DataField="DueDate" HeaderText="Due Date">
          <headerstyle HorizontalAlign="Left" />
        </SharePoint:SPBoundField>
      </Columns>
    </SharePoint:SPGridView>
    
  6. Нажмите кнопку Сохранить на панели инструментов.

  7. В обозревателе решений разверните узел VisualWebPart1UserControl.ascx и откройте файл с выделенным кодом VisualWebPart1UserControl.ascx.cs.

  8. Добавьте следующие предложения using.

    using System.Linq;
    using Microsoft.SharePoint;
    using Microsoft.SharePoint.Linq;
    
  9. Замените метод Page_Load на приведенный ниже. Обратите внимание, что выражения emp.Project.DueDate и emp.Project.Title создают неявные связи между списками Сотрудники и Проекты. Также обратите внимание, что в операторе select указаны только поля, которые будут фактические представлены в веб-части. Поле Описание каждого элемента проекта не обязательно отправлять по сети из базы данных контента на интерфейсный веб-сервер.

    protected void Page_Load(object sender, EventArgs e)
    {
        using (ContosoDataContext dc = new ContosoDataContext(SPContext.Current.Web.Url))
        {
            EntityList<EmployeesItem> Employees =
            dc.GetList<EmployeesItem>("Employees");
    
            var empQuery = from emp in Employees
                           where emp.Project.DueDate < DateTime.Now.AddMonths(6)
                           select new
                           {
                               emp.Title,
                               emp.JobTitle,
                               ProjectTitle = emp.Project.Title,
                               DueDate = emp.Project.DueDate.Value.ToShortDateString()
                            };
    
            spGridView.DataSource = empQuery;
            spGridView.DataBind();
        }
    }
    
  10. Нажмите кнопку Сохранить на панели инструментов.

Развертывание тестовой веб-части

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

    • Запуск пакетного файла (и, соответственно, SPMetal)

    • Построение проекта

    • Развертывание файла пакета ProjectsWithContacts.wsp в коллекцию решений фермы

    • Развертывание сборки Contoso.SharePoint.WebPartPages.ProjectsByContact.dll в глобальный кэш сборок

    • Добавление функции ProjectsWithContacts Feature1 в коллекцию функций семейства веб-сайтов

    • Активация функции

    • Перезапуск служб IIS

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

  2. Перейдите на любую страницу веб-частей веб-сайта и откройте на ленте вкладку Страница.

  3. В любой зоне веб-части нажмите кнопку Изменить страницу и выберите команду Добавить веб-часть.

  4. В поле Категории щелкните папку Настраиваемые, щелкните Проекты, перечисленные основным контактным лицом в поле Веб-части, а затем нажмите кнопку Добавить.

  5. Щелкните Остановить изменение. Убедитесь, что веб-часть отображается на странице и заполнена данными из двух списков. Проекты с датами завершения более чем через шесть месяцев от текущей не должны отображаться.

См. также

Задачи

Практическое руководство. Использование программы SPMetal

Концепции

Практическое руководство. Выполнение запроса с помощью LINQ to SharePoint

Добавление местоположений программ в переменную среды PATH

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

Управление данными с помощью LINQ в SharePoint