Implémentation de la fonctionnalité de liaison de données GridDesktop dans les feuilles de calcul

Création d’une base de données d’exemple

  1. Créez une base de données d’exemple à utiliser avec l’exemple. Nous avons utilisé Microsoft Access pour créer une base de données d’exemple avec une table Produits (schéma ci-dessous).

todo:image_alt_text

  1. Trois enregistrements fictifs sont ajoutés à la table Produits. Enregistrements dans la table Produits

todo:image_alt_text

Créer une application d’exemple

Maintenant, créez une application de bureau simple dans Visual Studio et faites ce qui suit.

  1. Faites glisser le contrôle “GridControl” depuis la boîte à outils et déposez-le sur le formulaire.
  2. Déposez quatre boutons depuis la boîte à outils en bas du formulaire et définissez leur propriété de texte respectivement comme Lier à la feuille de calcul, Ajouter ligne, Supprimer ligne et Mettre à jour dans la base de données.

Ajout de l’espace de noms et déclaration de variables globales

Parce que cet exemple utilise une base de données Microsoft Access, ajoutez l’espace de noms System.Data.OleDb en haut du code.

// 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;

Vous pouvez maintenant utiliser les classes regroupées sous cet espace de noms.

  1. Déclarez des variables globales.
// 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;

Remplissage du DataSet avec des données de la base de données

Connectez-vous maintenant à la base de données d’exemple pour récupérer et remplir les données dans un objet DataSet.

  1. Utilisez l’objet OleDbDataAdapter pour vous connecter à notre base de données d’exemple et remplir un DataSet avec les données récupérées de la table Produits dans la base de données, comme indiqué dans le code ci-dessous.
// 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");
}

Lier la feuille de calcul avec le DataSet de données de la base de données Produits:

Lié la feuille de calcul avec la table de produits du DataSet :

  1. Accédez à la feuille de calcul souhaitée.
  2. Liez la feuille de calcul à la table Produits du DataSet.

Ajoutez le code suivant à l’événement de clic du bouton Lier la feuille de calcul.

// 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"], "");

Paramétrage des en-têtes de colonnes de la feuille de calcul

La feuille de calcul liée charge désormais les données avec succès mais les en-têtes de colonne sont par défaut étiquetées A, B et C. Il serait préférable de définir les en-têtes de colonne sur les noms de colonne dans la table de la base de données.

Pour définir les en-têtes de colonne de la feuille de calcul :

  1. Obtenez les légendes pour chaque colonne du DataTable (Produits) dans le DataSet.
  2. Attribuez les légendes aux en-têtes des colonnes de la feuille de calcul.

Ajoutez le code écrit dans l’événement de clic du bouton Lier la feuille de calcul avec le extrait de code suivant. En faisant cela, les anciens en-têtes de colonne (A, B et C) seront remplacés par ProductID, ProductName et 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;
}

Personnalisation de la largeur et des styles des colonnes

Pour améliorer l’apparence de la feuille de calcul, il est possible de définir la largeur et les styles des colonnes. Par exemple, parfois, l’en-tête de colonne ou la valeur à l’intérieur de la colonne est constitué d’un grand nombre de caractères qui ne rentrent pas dans la cellule. Pour résoudre de tels problèmes, Aspose.Cells.GridDesktop prend en charge la modification de la largeur des colonnes.

Ajoutez le code suivant au bouton Lier la feuille de calcul. Les largeurs des colonnes seront personnalisées selon les nouveaux paramètres.

// 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 prend également en charge l’application de styles personnalisés aux colonnes. Le code suivant, ajouté au bouton Lier la feuille de calcul, personnalise les styles de colonne pour les rendre plus présentables.

// 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);
}

Maintenant, exécutez l’application et cliquez sur le bouton Lier la feuille de calcul.

Ajout de lignes

Pour ajouter de nouvelles lignes à une feuille de calcul, utilisez la méthode AddRow de la classe Worksheet. Cela ajoute une ligne vide en bas et une nouvelle DataRow est ajoutée à la source de données (ici, une nouvelle DataRow est ajoutée à la DataTable du DataSet). Les développeurs peuvent ajouter autant de lignes qu’ils le souhaitent en appelant la méthode AddRow à plusieurs reprises. Lorsqu’une ligne a été ajoutée, les utilisateurs peuvent y saisir des valeurs.

// 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();

Suppression de lignes

Aspose.Cells.GridDesktop prend également en charge la suppression de lignes en appelant la méthode RemoveRow de la classe Worksheet. Supprimer une ligne à l’aide d’Aspose.Cells.GridDesktop nécessite l’index de la ligne à supprimer.

// 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);

Ajoutez le code ci-dessus au bouton Supprimer la ligne et exécutez l’application. Quelques enregistrements sont affichés avant que la ligne soit supprimée. En sélectionnant une ligne et en cliquant sur le bouton Supprimer la ligne, la ligne sélectionnée est supprimée.

Enregistrer les modifications dans la base de données

Enfin, pour enregistrer les modifications apportées par les utilisateurs à la feuille de calcul dans la base de données, utilisez la méthode Update de l’objet OleDbDataAdapter. La méthode Update prend la source de données (DataSet, DataTable, etc.) de la feuille de calcul pour mettre à jour la base de données.

// 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. Ajoutez le code ci-dessus au bouton Mettre à jour la base de données.
  2. Exécutez l’application.
  3. Effectuez des opérations sur les données de la feuille de calcul, peut-être en ajoutant de nouvelles lignes et en modifiant ou en supprimant des données existantes.
  4. Ensuite, cliquez sur Mettre à jour la base de données pour enregistrer les modifications dans la base de données.
  5. Vérifiez la base de données pour voir si les enregistrements de la table ont été mis à jour en conséquence.