Сравнение  возможностей  элементов  управления DataGridView(WinForms) и DataGrid(WPF)






Прохоров Евгений
ИСТбд-31


DataGridView.Мастер

У элемента DataGridView имеется связанный с ним мастер, который может генерировать код доступа к данным.


DataGridView.Источник Данных

DataGridView поддерживает следующие типы источника:
  • База данных
  • Служба
  • Объект
  • SharePoint
Также можно создать несвязный элемент, задав самостоятельно название и количество столбцов в DataGridView.

DataGridView.Правка столбцов

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

DataGridView.Правка столбцов

При клике на кнопку "Добавить" появляется диалоговое окно, где можно указать тип и название колонки.

Типы столбцов:

  • DataGridViewButtonColumn
  • DataGridViewCheckBoxColumn
  • DataGridViewComboBoxColumn
  • DataGridViewImageColumn
  • DataGridViewLinkColumn
  • DataGridViewTextBoxColumn






DataGridView.Сценарии использования



Наиболее распространенные сценарии, включающие использование элемента DataGridView:

  • Несвязанный режим. 
  • Связанный режим.
  • Виртуальный режим. 

Сценарий 1.Несвязанный режим

Для отображения в элементе управления DataGridView данные необязательно хранить во внешнем источнике данных. При работе с небольшими объемами данных можно самостоятельно заполнить элемент управления и управлять данными через элемент управления. Такой режим называется несвязанным режимом


Ключевые моменты сценария:

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

Сценарий 2. Связанный Режим

Ключевые моменты сценария:

  • Автоматическое формирование столбцов на основе свойств источника данных или столбцов базы данных, а также автоматическое заполнение элемента управления.
  • Cвязанный режим подходит для взаимодействия с большими объемами данных. 
  • Сортировка, закрепление и изменение порядка столбцов.
  • Поддержка буфера обмена позволяет копировать данные из собственных приложений в другие приложения.

Сценарий 3. Виртуальный режим

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


Ключевые моменты сценария:

  • Виртуальный режим подходит для отображения очень больших объемов данных при необходимости точной настройки производительности.

DataGrid

DataGrid представляет собой элемент управления отображением данных, который извлекает информацию из коллекции объектов и визуализирует ее в сетке со строками и ячейками. Каждая строка соответствует отдельному объекту, а каждый столбец — свойству в этом объекте.

Небольшой пример заполнения DataGrid`а:

Создадим таблицу с пользователями, где будут следующие поля:

  • Id - идентификатор;
  • FirstName - имя;
  • LastName - фамилия;
  • Sex - пол.

DataGrid.Заполнение данными

XAML:
  1. <Grid>
  2.         <Button Click="Button_Click_1" Content="Заполнить DataGrid" HorizontalAlignment="Left" VerticalAlignment="Top" Width="150" Height="34"/>
  3.         <DataGrid Name="Users" AutoGenerateColumns="True" Margin="0,36,0,0">
  4.         </DataGrid>
  5.     </Grid> 
Структура User:
  1. public struct User {
  2.             public int Id { get; set; }
  3.             public string FirstName { get; set; }
  4.             public string LastName { get; set; }
  5.             public bool Sex { get; set; }
  6.         }

DataGrid.Заполнение данными

Обработка нажатия кнопки:
  1. private void Button_Click_1(object sender, RoutedEventArgs e)
  2. {
  3.             User[] user_source = new User[5];
  4.             string[] names = {"Иван", "Аня", "Катя", "Борис", "Валя"};
  5.             string[] lastnames = {"Зарипов", "Крайнова", "Лель", "Грачев", "Наумова"};
  6.             for (int i = 0; i < 5; i++)
  7.             {
  8.                 user_source[i].Id = i + 1;
  9.                 user_source[i].FirstName = names[i];
  10.                 user_source[i].LastName = lastnames[i];
  11.                 user_source[i].Sex = (i == 0 || i == 3) ? true : false;
  12.             }
  13.             Users.ItemsSource = user_source; 
  14. }

DataGrid.Заполнение данными




Таким образом массив структур user_source преобразовался в таблицу в dataGrid.

DataGrid.Типы столбцов



Тип создаваемого столбца

Тип данных

DataGridTextColumn

String

DataGridCheckBoxColumn

Boolean

DataGridComboBoxColumn

Enum

DataGridHyperlinkColumn

Uri

DataGrid.Детали строк

DataGrid поддерживаются так называемые детали строк (row details) — отдельная дополнительная область, которая появляется непосредственно под значениями столбца для строки. Эта область предоставляет две дополнительных возможности, которые недоступны при наличии одних только столбцов:

  • Она занимает всю ширину DataGrid и не врезается в отдельные столбцы, обеспечивая больше пространства для работы.
  • Ее можно сконфигурировать так, чтобы она появлялась только для избранных строк, что позволяет убирать лишние детали, когда в них нет необходимости.

DataGrid.Детали строк

XAML:
  1. <DataGrid.RowDetailsTemplate>
  2.           <DataTemplate>
  3.                  <Border Margin="10" Padding="10" BorderBrush="SteelBlue"
  4.                          BorderThickness="2" CornerRadius="5">
  5.                   <TextBlock Text="{Binding Path=Description}" TextWrapping="Wrap" 
  6.                          FontSize="10" MaxWidth="350"></TextBlock>
  7.                  </Border>
  8.           </DataTemplate>
  9. </DataGrid.RowDetailsTemplate>

Можно также добавить элементы управления, которые позволяют выполнять различные задачи (например, извлечь дополнительную информацию о товаре, поместить товар в корзину для покупок, отредактировать сведения и т.д.).







ВОПРОСЫ?

Made with Slides.com