Implementieren der GridDesktop-Datenbindungsfunktion in Arbeitsblättern

Erstellen einer Beispieldatenbank

  1. Erstellen Sie eine Beispieldatenbank zur Verwendung mit dem Beispiel. Wir haben Microsoft Access verwendet, um eine Beispieldatenbank mit einer Produkttabelle (Schema unten) zu erstellen.

todo: Bild_alt_Text

  1. Der Tabelle Products werden drei Dummy-Datensätze hinzugefügt. Datensätze in der Produkttabelle

todo: Bild_alt_Text

Erstellen Sie eine Beispielanwendung

Erstellen Sie nun eine einfache Desktopanwendung in Visual Studio und gehen Sie wie folgt vor.

  1. Ziehen Sie das “GridControl”-Steuerelement aus der Toolbox und legen Sie es auf dem Formular ab.
  2. Legen Sie vier Schaltflächen aus der Toolbox am unteren Rand des Formulars ab und legen Sie ihre Texteigenschaft auf festArbeitsblatt binden, Zeile hinzufügen, Zeile löschen undUpdate auf Datenbank beziehungsweise.

Namespace hinzufügen und globale Variablen deklarieren

Da in diesem Beispiel eine Access-Datenbank Microsoft verwendet wird, fügen Sie den System.Data.OleDb-Namespace am Anfang des Codes 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 Namensraum gepackten Klassen verwenden.

  1. Deklarieren Sie globale Variablen.
// 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 mit Daten aus Datenbank füllen

Stellen Sie nun eine Verbindung mit der Beispieldatenbank her, um Daten abzurufen und in ein DataSet-Objekt zu füllen.

  1. Verwenden Sie das OleDbDataAdapter-Objekt, um eine Verbindung mit unserer Beispieldatenbank herzustellen und ein DataSet mit Daten zu füllen, die aus der Products-Tabelle in der Datenbank abgerufen wurden, 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");
}

Verbindliches Arbeitsblatt mit DataSet

Binden Sie das Arbeitsblatt mit der Products-Tabelle des DataSets:

  1. Greifen Sie auf ein gewünschtes Arbeitsblatt zu.
  2. Binden Sie das Arbeitsblatt mit der Tabelle Products des DataSets.

Fügen Sie den folgenden Code hinzuArbeitsblatt binden Klickereignis der Schaltfläche.

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

Spaltenüberschriften des Arbeitsblatts festlegen

Das gebundene Arbeitsblatt lädt nun erfolgreich Daten, aber die Spaltenüberschriften sind standardmäßig mit A, B und C gekennzeichnet. Besser wäre es, die Spaltenüberschriften auf die Spaltennamen in der Datenbanktabelle zu setzen.

So legen Sie die Spaltenüberschriften des Arbeitsblatts fest:

  1. Rufen Sie die Beschriftungen für jede Spalte der DataTable (Produkte) im DataSet ab.
  2. Weisen Sie die Überschriften den Überschriften der Arbeitsblattspalten zu.

Fügen Sie den in der geschriebenen Code anArbeitsblatt binden Klickereignis der Schaltfläche mit dem folgenden Code-Snippet. 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 der Spalten festzulegen. Beispielsweise besteht manchmal die Spaltenüberschrift oder der Wert in der Spalte aus einer langen Anzahl von Zeichen, die nicht in die Zelle passen. Um solche Probleme zu lösen, unterstützt Aspose.Cells.GridDesktop das Ändern der Spaltenbreite.

Fügen Sie den folgenden Code an die anArbeitsblatt binden Knopf. 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 benutzerdefinierter Stile auf Spalten. Der folgende Code, angehängt an dieArbeitsblatt binden Schaltfläche, passt die Spaltenstile an, um sie präsentabler zu machen.

// 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 dieArbeitsblatt binden Knopf.

Zeilen hinzufügen

Um einem Arbeitsblatt neue Zeilen hinzuzufügen, verwenden Sie die AddRow-Methode der Worksheet-Klasse. Dadurch wird unten eine leere Zeile angehängt, und der Datenquelle wird eine neue DataRow hinzugefügt (hier wird der DataTable des DataSet eine neue DataRow hinzugefügt). Entwickler können beliebig viele Zeilen hinzufügen, indem sie die AddRow-Methode immer wieder aufrufen. Wenn 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. Das Entfernen einer Zeile mit Aspose.Cells.GridDesktop erfordert, dass der Index der Zeile gelöscht wird.

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

Hinzufügen des obigen Codes zu derZeile löschen Schaltfläche und führen Sie die Anwendung aus. Einige Datensätze werden angezeigt, bevor die Zeile entfernt wird. Wählen Sie eine Zeile aus und klicken Sie aufZeile löschen Schaltfläche entfernt die ausgewählte Zeile.

Änderungen in der Datenbank speichern

Um schließlich alle Änderungen, die von Benutzern am Arbeitsblatt vorgenommen wurden, wieder in der Datenbank zu speichern, verwenden Sie die Update-Methode des OleDbDataAdapter-Objekts. Die Update-Methode verwendet 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);
  1. Fügen Sie den obigen Code hinzuUpdate auf Datenbank Knopf.
  2. Führen Sie die Anwendung aus.
  3. Führen Sie einige Operationen an den Arbeitsblattdaten durch, fügen Sie möglicherweise neue Zeilen hinzu und bearbeiten oder entfernen Sie vorhandene Daten.
  4. Dann klickUpdate auf Datenbank um die Änderungen in der Datenbank zu speichern.
  5. Überprüfen Sie die Datenbank, um festzustellen, ob die Tabellendatensätze entsprechend aktualisiert wurden.