Implementering av GridDesktop Data Binding Feature i Worksheeter

Skapar en provdatabas

  1. Skapa en provdatabas att använda med exemplet. Vi använde Microsoft Access för att skapa en provdatabas med en produktstabell (schema nedan).

todo:image_alt_text

  1. Tre fiktiva poster läggs till i produkttabellen. Poster i produkttabellen

todo:image_alt_text

Skapa en provapplikation

Skapa nu en enkel skrivbordsapplikation i Visual Studio och gör följande.

  1. Dra kontrollen “GridControl” från verktygsfältet och släpp den på formuläret.
  2. Släpp fyra knappar från verktygsfältet längst ner på formuläret och ställ in deras textegenskap som Bind Woksheet, Lägg till rad, Ta bort rad och Uppdatera till databasen respektive.

Lägg till Namnområde och Deklarera Globala Variabler

Eftersom detta exempel använder en Microsoft Access-databas, lägg till System.Data.OleDb-namnområdet högst upp i koden.

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

Du kan nu använda klasserna förpackade under detta namnområde.

  1. Deklarera globala variabler.
// 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;

Fylla Dataset med Data från Databasen

Anslut nu till den provdatabasen för att hämta och fylla data i ett Dataset-objekt.

  1. Använd OleDbDataAdapter-objektet för att ansluta till vår provdatabas och fylla ett Dataset med data som hämtats från produkttabellen i databasen, enligt koden nedan.
// 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");
}

Bindning av kalkylark med Dataset

Binda kalkylarket till Datasetets produkttabell:

  1. Öppna önskat kalkylark.
  2. Binda kalkylarket till Datasetets produktstabell.

Lägg till följande kod i händelsen för knappen Bind Kalkylark.

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

Inställning av kolumnrubriker för kalkylark

Det bundna kalkylarket laddar nu data framgångsrikt men kolumnrubrikerna är som standard märkta A, B och C. Det skulle vara bättre att ställa in kolumnrubrikerna till kolumnnamnen i databastabellen.

För att ställa in kolumnrubriker för kalkylarket:

  1. Hämta bildtexterna för varje kolumn i DataTable (Products) i Datasetet.
  2. Tilldela bildtexterna till rubrikerna för kalkylarkskolumnerna.

Lägg till den skrivna koden i händelsen för knappen Bind Kalkylark med följande kodsnutt. Genom att göra detta kommer de gamla kolumnrubrikerna (A, B och C) att ersättas med ProductID, ProductName och 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;
}

Anpassning av bredd och stil för kolumnerna

För att förbättra kalkylarkets utseende ytterligare är det möjligt att ställa in bredd och stil för kolumnerna. Till exempel, ibland består kolumnrubriken eller värdet inuti kolumnen av ett långt antal tecken som inte passar inuti cellen. För att lösa sådana problem stöder Aspose.Cells.GridDesktop att ändra kolumnernas bredd.

Lägg till följande kod till knappen Bind Kalkylark. Kolumnbredderna kommer att anpassas enligt de nya inställningarna.

// 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 stöder också att tillämpa anpassade stilar på kolumnerna. Följande kod, tillagd i knappen Bind Kalkylark, anpassar kolumnstilarna för att göra dem mer presenterbara.

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

Kör nu programmet och klicka på Bind Worksheet-knappen.

Lägger till rader

För att lägga till nya rader i ett kalkylblad, använd Worksheet-klassens AddRow-metod. Det här lägger till en tom rad längst ner och en ny DataRow läggs till i datakällan (här läggs en ny DataRow till i DataSetets DataTable). Utvecklare kan lägga till så många rader de vill genom att fortsätta anropa AddRow-metoden. När en rad har lagts till kan användare ange värden i den.

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

Ta bort rader

Aspose.Cells.GridDesktop stödjer också att ta bort rader genom att anropa Worksheet-klassens RemoveRow-metod. Det krävs index för den rad som ska tas bort vid borttagning av en rad med Aspose.Cells.GridDesktop.

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

Lägg till ovanstående kod i Delete Row-knappen och kör programmet. Några poster visas innan raden tas bort. Genom att välja en rad och klicka på Delete Row-knappen tas den valda raden bort.

Spara ändringar till databasen

Slutligen, för att spara alla ändringar som användare har gjort i kalkylbladet tillbaka till databasen, använd OleDbDataAdapter-objektets Update-metod. Update-metoden tar datakällan (DataSet, DataTable etc.) för kalkylbladet för att uppdatera databasen.

// 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. Lägg till ovanstående kod i Uppdatera till databas-knappen.
  2. Kör programmet.
  3. Utför några operationer på kalkylbladsdata, kanske lägga till nya rader och redigera eller ta bort befintliga data.
  4. Klicka sedan på Uppdatera till databas för att spara ändringarna i databasen.
  5. Kontrollera databasen för att se att tabellens poster har uppdaterats därefter.