Implementazione della funzionalità di binding dei dati GridDesktop nei fogli di lavoro

Creazione di un database di esempio

  1. Creare un database di esempio da utilizzare nell’esempio. Abbiamo utilizzato Microsoft Access per creare un database di esempio con una tabella Prodotti (schema di seguito).

todo:image_alt_text

  1. Sono stati aggiunti tre record falsi alla tabella Prodotti. Record nella tabella Prodotti

todo:image_alt_text

Creare un’applicazione di esempio

Ora creare un’applicazione desktop semplice in Visual Studio e fare quanto segue.

  1. Trascina il controllo “GridControl” dalla casella degli strumenti e rilascialo sul modulo.
  2. Trascina quattro pulsanti dalla casella degli strumenti in fondo al modulo e imposta la loro proprietà di testo rispettivamente come Collega foglio di lavoro, Aggiungi riga, Elimina riga e Aggiorna al Database.

Aggiunta di Namespace e Dichiarazione di Variabili Globali

Poiché questo esempio utilizza un database Microsoft Access, aggiungi il namespace System.Data.OleDb nella parte superiore del codice.

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

Ora puoi utilizzare le classi contenute in questo namespace.

  1. Dichiarare le variabili globali.
// 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;

Riempimento DataSet con Dati dal Database

Ora connettiti al database di esempio per recuperare e riempire i dati in un oggetto DataSet.

  1. Utilizzare l’oggetto OleDbDataAdapter per connettersi al nostro database di esempio e riempire un DataSet con i dati recuperati dalla tabella Prodotti nel database, come mostrato nel codice sottostante.
// 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");
}

Collegamento foglio di lavoro con DataSet

Collega il foglio di lavoro con la tabella Prodotti del DataSet:

  1. Accedi a un foglio di lavoro desiderato.
  2. Collega il foglio di lavoro con la tabella Prodotti del DataSet.

Aggiungi il seguente codice all’evento di clic del pulsante Collega foglio di lavoro.

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

Impostazione Intestazioni Colonne del Foglio di Lavoro

Ora il foglio di lavoro vincolato carica con successo i dati, ma gli header delle colonne sono etichettati di default come A, B e C. Sarebbe meglio impostare gli header delle colonne con i nomi delle colonne nella tabella del database.

Per impostare gli header delle colonne del foglio di lavoro:

  1. Ottenere le didascalie per ogni colonna del DataTable (Prodotti) nel DataSet.
  2. Assegnare le didascalie agli header delle colonne del foglio di lavoro.

Aggiungere il codice scritto nell’evento di clic del pulsante Vincola foglio di lavoro con il seguente snippet di codice. In questo modo, gli header delle colonne precedenti (A, B e C) saranno sostituiti con ProductID, ProductName e 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;
}

Personalizzazione della larghezza e dello stile delle colonne

Per migliorare ulteriormente l’aspetto del foglio di lavoro, è possibile impostare la larghezza e lo stile delle colonne. Ad esempio, a volte, l’header della colonna o il valore all’interno della colonna consiste in un lungo numero di caratteri che non si adattano dentro la cella. Per risolvere tali problemi, Aspose.Cells.GridDesktop supporta la modifica delle larghezze delle colonne.

Aggiungere il seguente codice al pulsante Vincola foglio di lavoro. Le larghezze delle colonne verranno personalizzate in base alle nuove impostazioni.

// 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 supporta anche l’applicazione di stili personalizzati alle colonne. Il seguente codice, aggiunto al pulsante Vincola foglio di lavoro, personalizza gli stili delle colonne per renderli più presentabili.

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

Ora eseguire l’applicazione e fare clic sul pulsante Vincola foglio di lavoro.

Aggiunta di righe

Per aggiungere nuove righe a un foglio di lavoro, utilizzare il metodo AddRow della classe Worksheet. Questo aggiunge una riga vuota in basso e viene aggiunta una nuova DataRow al data source (qui, viene aggiunta una nuova DataRow alla DataTable del DataSet). Gli sviluppatori possono aggiungere quante righe desiderano chiamando di nuovo il metodo AddRow. Quando una riga è stata aggiunta, gli utenti possono inserire valori al suo interno.

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

Eliminazione delle righe

Aspose.Cells.GridDesktop supporta anche l’eliminazione delle righe chiamando il metodo RemoveRow della classe Worksheet. Rimuovere una riga utilizzando Aspose.Cells.GridDesktop richiede l’indice della riga da eliminare.

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

Aggiungere il codice sopra al pulsante Elimina riga e eseguire l’applicazione. Alcuni record vengono visualizzati prima che la riga venga rimossa. Selezionando una riga e facendo clic sul pulsante Elimina riga verrà rimossa la riga selezionata.

Salvataggio delle modifiche nel database

Infine, per salvare qualsiasi modifica apportata dagli utenti al foglio di lavoro nel database, utilizzare il metodo Update dell’oggetto OleDbDataAdapter. Il metodo Update prende il data source (DataSet, DataTable ecc.) del foglio di lavoro per aggiornare il database.

// 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. Aggiungere il codice sopra al pulsante Aggiorna al database.
  2. Eseguire l’applicazione.
  3. Eseguire alcune operazioni sui dati del foglio di lavoro, magari aggiungendo nuove righe e modificando o rimuovendo dati esistenti.
  4. Quindi fare clic su Aggiorna al Database per salvare le modifiche nel database.
  5. Controllare il database per verificare che i record della tabella siano stati aggiornati di conseguenza.