Как многие из вас знают, в .NET Standard 2.0 появилась поддержка DataSet и DataTable. При этом мы получили огромный спрос на поддержку привязки DataTable к Xamarin.Forms DataGrid. Мы рады сообщить, что эта функция доступна в выпуске 2019 Volume 3 — Beta.
В этом блоге я расскажу, как привязать класс DataTable к элементу управления Xamarin.Forms DataGrid.
Привязка данных
Давайте создадим простую таблицу данных с данными Сведения о заказе. Вам не потребуется никаких дополнительных материалов для привязки, просто создайте таблицу данных и назначьте ее непосредственно свойству ItemsSource DataGrid. Также можно привязать таблицу данных из набора данных.
Создание ViewModel
Создайте класс модели представления в проекте Xamarin, аналогичный тому, что показан в следующем примере кода.
public class ViewModel { public ViewModel() { DataTableCollection = GetDataTable(); } public DataTable DataTableCollection { get; set; } private DataTable GetDataTable() { DataTable dataTable = new DataTable(); dataTable.Rows.Add(1001, "Maria Anders", "ALFKI", "Germany"); dataTable.Rows.Add(1002, "Ana Trujilo", "ANATR", "Mexico"); dataTable.Rows.Add(1003, "Antonio Moreno","ENDGY", "Mexico"); dataTable.Rows.Add(1004, "Thomas Hardy", "ANTON", "UK"); dataTable.Rows.Add(1005, "Christina Berglund", "BERGS", "Sweden"); dataTable.Rows.Add(1006, "Hanna Moos", "BLAUS", "Germany"); dataTable.Rows.Add(1007, "Frederique Citeaux", "BLONP", "France"); dataTable.Rows.Add(1008, "Martin Sommer", "BOLID", "Spain"); dataTable.Rows.Add(1009, "Laurence Lebihan", "BONAP", "France"); dataTable.Rows.Add(1010, "Kathryn", "BOTTM", "Canada"); dataTable.Rows.Add(1011, "Tamer", "XDKLF", "UK"); dataTable.Rows.Add(1012, "Martin", "QEUDJ", "US"); dataTable.Rows.Add(1013, "Nancy", "ALOPS", "France"); dataTable.Rows.Add(1014, "Janet", "KSDIO", "Canada"); dataTable.Rows.Add(1015, "Dodsworth", "AWSDE", "Canada"); dataTable.Rows.Add(1016, "Buchanan", "CDFKL", "Germany"); dataTable.Rows.Add(1017, "Therasa", "WSCJD", "Canada"); dataTable.Rows.Add(1018, "Margaret", "PLSKD", "UK"); dataTable.Rows.Add(1019, "Anto", "CCDSE", "Sweden"); dataTable.Rows.Add(1020, "Edward", "EWUJG", "Germany"); dataTable.Rows.Add(1021, "Anne", "AWSDK", "US"); dataTable.Rows.Add(1022, "Callahan", "ODKLF", "UK"); dataTable.Rows.Add(1023, "Vinet", "OEDKL", "France"); return dataTable; } }
Binding ItemsSource в XAML
На главной странице добавьте необходимое пространство имен XML для использования элемента управления SfDataGrid, задайте для BindingContext страницы класс ViewModel и привяжите ItemSource для SfDataGrid с DataTableCollection.
<?xml version="1.0" encoding="utf-8" ?> <ContentPage xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" xmlns:local="clr-namespace:DataGridDemo;assembly=DataGridDemo" xmlns:syncfusion="clr-namespace:Syncfusion.SfDataGrid.XForms;assembly=Syncfusion.SfDataGrid.XForms" x:Class="DataGridDemo.Sample"> <ContentPage.BindingContext> <local:ViewModel x:Name="ViewModel"/> </ContentPage.BindingContext> <ContentPage.Content> <syncfusion:SfDataGrid x:Name="dataGrid" ItemsSource="{Binding DataTableCollection}"> </syncfusion:SfDataGrid> </ContentPage.Content> </ContentPage>
CRUD-операции
DataGrid автоматически обновляет пользовательский интерфейс всякий раз, когда мы добавляем, удаляем или изменяем строки базовой коллекции DataTable.
Операции с данными
DataGrid поддерживает различные операции с данными для представления данных в нем. По умолчанию поддерживаются:
- Сортировка (включая многоколоночную сортировку)
- Группировка (включая многоколоночную группировку)
- Фильтрация
- Резюме
Сортировка
Вы можете сортировать столбцы с помощью различных встроенных опций, таких как сортировка по нескольким столбцам и сортировка по трем состояниям. Но выборочная сортировка не поддерживается.
На следующем снимке экрана сетка данных отсортирована в порядке возрастания относительно столбца Имя клиента.
Группировка
Данные могут быть организованы в иерархическую структуру на основе совпадающих значений полей. Также поддерживаются Мультигруппировка и Пользовательская группировка.
Фильтрация
Встроенный в DataGrid View.Filtering не поддерживается для класса DataTable. Но вы можете фильтровать записи, используя свойство DataView.RowFilter DataTable.
В следующем примере свойство DataView.RowFilter установлено как «[Страна] = ‘Канада’».
Резюме
Все типы сводок, поддерживаемые DataGrid, поддерживаются для DataTable, т. е. сводка по группе, сводка по заголовку и сводка по таблице.
Другие особенности
Доступна поддержка всех других функций DataGrid, таких как сложенные заголовки, перетаскивание строк, несвязанный столбец и несвязанная строка. Вы можете обратиться к руководству пользователя, чтобы узнать больше о наборах функций DataGrid.
Вывод
Надеюсь, вам понравился этот краткий обзор поддержки привязки DataTable в DataGrid. Эта поддержка доступна в нашей бета-версии Volume 3 2019, которую вы можете скачать здесь.
Если у вас есть какие-либо вопросы или вам нужны разъяснения по поводу этой функции, сообщите нам об этом в комментариях ниже. Вы также можете связаться с нами через наш форум поддержки, Direct-Trac или наш портал обратной связи. Мы рады Вам помочь!
Первоначально опубликовано на https://www.syncfusion.com 23 сентября 2019 г.