Implementieren des Data Binding Features von GridDesktop in Arbeitsblättern
Erstellen einer Beispieldatenbank
- Erstellen einer Beispieldatenbank, die mit dem Beispiel verwendet werden soll. Wir haben Microsoft Access verwendet, um eine Beispieldatenbank mit einer Produkttabelle (Schema unten) zu erstellen.
- Es wurden drei Dummy-Datensätze zur Produkttabelle hinzugefügt. Datensätze in der Produkttabelle
Erstellen einer Beispielanwendung
Erstellen Sie jetzt eine einfache Desktop-Anwendung in Visual Studio und führen Sie die folgenden Schritte aus.
- Ziehen Sie die Steuerung “GridControl” aus der Toolbox und platzieren Sie sie auf dem Formular.
- Fügen Sie vier Schaltflächen aus der Toolbox am unteren Rand des Formulars hinzu und legen Sie ihren Text auf Bind Worksheet, Zeile hinzufügen, Zeile löschen und Aktualisierung in Datenbank fest.
Hinzufügen von Namensraum und Deklaration globaler Variablen
Da dieses Beispiel eine Microsoft Access-Datenbank verwendet, fügen Sie das System.Data.OleDb-Namespace ganz oben im Code hinzu.
// 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; |
Sie können jetzt die unter diesem Namespace verpackten Klassen verwenden.
- Globale Variablen deklarieren.
// 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; |
Füllen des DataSet mit Daten aus der Datenbank.
Stellen Sie nun eine Verbindung zur Beispieldatenbank her, um Daten abzurufen und in ein DataSet-Objekt zu laden.
- Verwenden Sie das OleDbDataAdapter-Objekt, um sich mit unserer Beispieldatenbank zu verbinden und ein DataSet mit Daten aus der Products-Tabelle in der Datenbank zu füllen, wie im folgenden Code gezeigt.
// 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"); | |
} |
Binden des Arbeitsblatts mit dem DataSet.
Binden Sie das Arbeitsblatt mit der Products-Tabelle des DataSet:
- Greifen Sie auf ein gewünschtes Arbeitsblatt zu.
- Binden Sie das Arbeitsblatt mit der Products-Tabelle des DataSet.
Fügen Sie den folgenden Code zum Klickereignis der Arbeitsblatt binden-Schaltfläche hinzu.
// 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"], ""); |
Festlegen von Spaltenüberschriften des Arbeitsblatts.
Das gebundene Arbeitsblatt lädt jetzt erfolgreich Daten, aber die Spaltenüberschriften sind standardmäßig mit A, B und C beschriftet. Es wäre besser, die Spaltenüberschriften auf die Spaltennamen in der Datenbanktabelle zu setzen.
Um die Spaltenüberschriften des Arbeitsblatts zu setzen:
- Holen Sie die Beschriftungen für jede Spalte der DataTable (Products) im DataSet.
- Weisen Sie die Beschriftungen den Überschriften der Arbeitsblattspalten zu.
Fügen Sie den im Klickereignis der Arbeitsblatt binden-Schaltfläche geschriebenen Codeausschnitt hinzu. Dadurch werden die alten Spaltenüberschriften (A, B und C) durch ProductID, ProductName und ProductPrice ersetzt.
// 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; | |
} |
Anpassen der Breite und des Stils von Spalten.
Um das Aussehen des Arbeitsblatts weiter zu verbessern, ist es möglich, die Breite und den Stil von Spalten festzulegen. Manchmal besteht z. B. die Spaltenüberschrift oder der Wert innerhalb der Spalte aus einer großen Anzahl von Zeichen, die nicht in die Zelle passen. Um solche Probleme zu lösen, unterstützt Aspose.Cells.GridDesktop das Ändern der Spaltenbreiten.
Fügen Sie den folgenden Code zur Arbeitsblatt binden-Schaltfläche hinzu. Die Spaltenbreiten werden entsprechend den neuen Einstellungen angepasst.
// 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 unterstützt auch das Anwenden von benutzerdefinierten Stilen auf Spalten. Der folgende Code, der zur Arbeitsblatt binden-Schaltfläche hinzugefügt wird, passt die Spaltenstile an, um sie präsentabler zu gestalten.
// 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); | |
} |
Führen Sie nun die Anwendung aus und klicken Sie auf die Schaltfläche Arbeitsblatt binden.
Zeilen hinzufügen
Um neue Zeilen zu einem Arbeitsblatt hinzuzufügen, verwenden Sie die AddRow-Methode der Worksheet-Klasse. Dadurch wird eine leere Zeile unten angehängt und eine neue DataRow wird der Datenquelle hinzugefügt (hier wird eine neue DataRow zur DataTable des DataSet hinzugefügt). Entwickler können beliebig viele Zeilen hinzufügen, indem sie die AddRow-Methode immer wieder aufrufen. Nachdem eine Zeile hinzugefügt wurde, können Benutzer Werte eingeben.
// 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(); |
Zeilen löschen
Aspose.Cells.GridDesktop unterstützt auch das Löschen von Zeilen durch Aufrufen der RemoveRow-Methode der Worksheet-Klasse. Zum Löschen einer Zeile ist der Index der zu löschenden Zeile erforderlich.
// 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); |
Fügen Sie den obigen Code zur Schaltfläche Zeile löschen hinzu und führen Sie die Anwendung aus. Einige Datensätze werden angezeigt, bevor die Zeile entfernt wird. Durch Auswahl einer Zeile und Klicken auf die Schaltfläche Zeile löschen wird die ausgewählte Zeile entfernt.
Änderungen in der Datenbank speichern
Schließlich können Änderungen, die Benutzer am Arbeitsblatt vorgenommen haben, zurück in die Datenbank gespeichert werden, indem die Update-Methode des OleDbDataAdapter-Objekts verwendet wird. Die Update-Methode übernimmt die Datenquelle (DataSet, DataTable usw.) des Arbeitsblatts, um die Datenbank zu aktualisieren.
// 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); |
- Fügen Sie den obigen Code zur Schaltfläche Database aktualisieren hinzu.
- Führen Sie die Anwendung aus.
- Führen Sie einige Operationen an den Arbeitsblattdaten aus, z. B. das Hinzufügen neuer Zeilen und das Bearbeiten oder Entfernen vorhandener Daten.
- Klicken Sie dann auf Database aktualisieren, um die Änderungen in der Datenbank zu speichern.
- Überprüfen Sie die Datenbank, um zu sehen, dass die Tabelleneinträge entsprechend aktualisiert wurden.