Реализация функции привязки данных GridDesktop на листах

Создание образца базы данных

  1. Создайте образец базы данных для использования в примере. Мы использовали Microsoft Access для создания примера базы данных с таблицей Products (схема ниже).

дело:изображение_альтернативный_текст

  1. В таблицу «Продукты» добавляются три фиктивные записи. Записи в таблице продуктов

дело:изображение_альтернативный_текст

Создайте образец приложения

Теперь создайте простое настольное приложение в Visual Studio и выполните следующие действия.

  1. Перетащите элемент управления «GridControl» из панели инструментов и поместите его на форму.
  2. Перетащите четыре кнопки из панели инструментов в нижнюю часть формы и установите для их текстового свойства значениеСвязать рабочий лист, Добавить ряд, Удалить строку иОбновление базы данных соответственно.

Добавление пространства имен и объявление глобальных переменных

Поскольку в этом примере используется база данных Access Microsoft, добавьте пространство имен System.Data.OleDb в начало кода.

// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-.NET
// Adding namespace to the top of code
using System.Data.OleDb;

Теперь вы можете использовать классы, упакованные в этом пространстве имен.

  1. Объявите глобальные переменные.
// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-.NET
// Declaring global variable
OleDbDataAdapter adapter;
OleDbCommandBuilder cb;
DataSet ds;

Заполнение набора данных данными из базы данных

Теперь подключитесь к образцу базы данных, чтобы получить и заполнить данные в объекте DataSet.

  1. Используйте объект OleDbDataAdapter для подключения к нашей тестовой базе данных и заполните DataSet данными, полученными из таблицы Products в базе данных, как показано в приведенном ниже коде.
// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-.NET
private void DataBindingFeatures_Load(object sender, EventArgs e)
{
// The path to the documents directory.
string dataDir = Utils.GetDataDir(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
// Creating Select query to fetch data from database
string query = "SELECT * FROM Products ORDER BY ProductID";
// Creating connection string to connect with database
string conStr = @"Provider=microsoft.jet.oledb.4.0;Data Source=" + dataDir + "dbDatabase.mdb";
// Creating OleDbDataAdapter object that will be responsible to open/close connections with database, fetch data and fill DataSet with data
adapter = new OleDbDataAdapter(query, conStr);
// Setting MissingSchemaAction to AddWithKey for getting necesssary primary key information of the tables
adapter.MissingSchemaAction = MissingSchemaAction.AddWithKey;
/*
* Creating OleDbCommandBuilder object to create insert/delete SQL commmands
* automatically that are used by OleDbDatAdapter object for updating
* changes to the database
*/
cb = new OleDbCommandBuilder(adapter);
// Creating DataSet object
ds = new DataSet();
// Filling DataSet with data fetched by OleDbDataAdapter object
adapter.Fill(ds, "Products");
}

Связывание рабочего листа с набором данных

Свяжите рабочий лист с таблицей Products набора данных:

  1. Доступ к нужному рабочему листу.
  2. Свяжите рабочий лист с таблицей продуктов набора данных.

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

// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-.NET
// Accessing the worksheet of the Grid that is currently active
Worksheet sheet = gridDesktop1.GetActiveWorksheet();
// Binding the Worksheet to Products table by calling its DataBind method
sheet.DataBind(ds.Tables["Products"], "");

Настройка заголовков столбцов рабочего листа

Связанный рабочий лист теперь успешно загружает данные, но заголовки столбцов по умолчанию помечены буквами A, B и C. Было бы лучше установить заголовки столбцов на имена столбцов в таблице базы данных.

Чтобы установить заголовки столбцов рабочего листа:

  1. Получите заголовки для каждого столбца DataTable (Products) в наборе данных.
  2. Назначьте заголовки заголовкам столбцов рабочего листа.

Добавьте код, написанный вСвязать рабочий лист событие нажатия кнопки со следующим фрагментом кода. При этом старые заголовки столбцов (A, B и C) будут заменены на ProductID, ProductName и ProductPrice.

// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-.NET
// Iterating through all columns of the Products table in DataSet
for (int i = 0; i < ds.Tables["Products"].Columns.Count; i++)
{
// Setting the column header of each column to the column caption of Products table
sheet.Columns[i].Header = ds.Tables["Products"].Columns[i].Caption;
}

Настройка ширины и стилей столбцов

Чтобы еще больше улучшить внешний вид рабочего листа, можно установить ширину и стили столбцов. Например, иногда заголовок столбца или значение внутри столбца состоит из большого количества символов, которые не помещаются внутри ячейки. Для решения таких проблем Aspose.Cells.GridDesktop поддерживает изменение ширины столбцов.

Добавьте следующий код вСвязать рабочий лист кнопка. Ширина столбцов будет настроена в соответствии с новыми настройками.

// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-.NET
// Customizing the widths of columns of the worksheet
sheet.Columns[0].Width = 70;
sheet.Columns[1].Width = 120;
sheet.Columns[2].Width = 80;

Aspose.Cells.GridDesktop также поддерживает применение пользовательских стилей к столбцам. Следующий код, добавленный кСвязать рабочий лист Кнопка настраивает стили столбцов, чтобы сделать их более презентабельными.

// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-.NET
// Iterating through each column of the worksheet
for (int i = 0; i < sheet.ColumnsCount; i++)
{
// Getting the style object of each column
Style style = sheet.Columns[i].GetStyle();
// Setting the color of each column to Yellow
style.Color = Color.Yellow;
// Setting the Horizontal Alignment of each column to Centered
style.HAlignment = HorizontalAlignmentType.Centred;
// Setting the style of column to the updated one
sheet.Columns[i].SetStyle(style);
}

Теперь запустите приложение и нажмите кнопкуСвязать рабочий лист Кнопка.

Добавление строк

Чтобы добавить новые строки на лист, используйте метод AddRow класса Worksheet. Это добавит пустую строку внизу, и в источник данных будет добавлена новая строка DataRow (здесь новая строка данных добавляется в DataTable набора данных). Разработчики могут добавлять столько строк, сколько хотят, снова и снова вызывая метод AddRow. После добавления строки пользователи могут вводить в нее значения.

// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-.NET
// Adding new row to the worksheet
gridDesktop1.GetActiveWorksheet().AddRow();

Удаление строк

Aspose.Cells.GridDesktop также поддерживает удаление строк путем вызова метода RemoveRow класса Worksheet. Удаление строки с помощью Aspose.Cells.GridDesktop требует удаления индекса строки.

// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-.NET
// Getting the index of the focused row
int focusedRowIndex = gridDesktop1.GetActiveWorksheet().GetFocusedCell().Row;
// Removing the focused row fro the worksheet
gridDesktop1.GetActiveWorksheet().RemoveRow(focusedRowIndex);

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

Сохранение изменений в базе данных

Наконец, чтобы сохранить любые изменения, внесенные пользователями в рабочий лист, обратно в базу данных, используйте метод Update объекта OleDbDataAdapter. Метод Update использует источник данных (DataSet, DataTable и т. д.) рабочего листа для обновления базы данных.

// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-.NET
// Accessing the worksheet of the Grid that is currently active
Worksheet sheet = gridDesktop1.GetActiveWorksheet();
// Updating the database according to worksheet data source
adapter.Update((DataTable)sheet.DataSource);
  1. Добавьте приведенный выше код вОбновление базы данных кнопка.
  2. Запустите приложение.
  3. Выполните некоторые операции с данными рабочего листа, возможно, добавьте новые строки и отредактируйте или удалите существующие данные.
  4. Затем нажмитеОбновление базы данных для сохранения изменений в базе данных.
  5. Проверьте базу данных, чтобы убедиться, что записи в таблице обновлены соответствующим образом.