Implementazione della funzionalità di binding dei dati GridDesktop nei fogli di lavoro
Creazione di un database di esempio
- 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).
- Sono stati aggiunti tre record falsi alla tabella Prodotti. Record nella tabella Prodotti
Creare un’applicazione di esempio
Ora creare un’applicazione desktop semplice in Visual Studio e fare quanto segue.
- Trascina il controllo “GridControl” dalla casella degli strumenti e rilascialo sul modulo.
- 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.
- 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.
- 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:
- Accedi a un foglio di lavoro desiderato.
- 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:
- Ottenere le didascalie per ogni colonna del DataTable (Prodotti) nel DataSet.
- 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); |
- Aggiungere il codice sopra al pulsante Aggiorna al database.
- Eseguire l’applicazione.
- Eseguire alcune operazioni sui dati del foglio di lavoro, magari aggiungendo nuove righe e modificando o rimuovendo dati esistenti.
- Quindi fare clic su Aggiorna al Database per salvare le modifiche nel database.
- Controllare il database per verificare che i record della tabella siano stati aggiornati di conseguenza.