Implementera GridDesktop-databindningsfunktionen i kalkylblad
Skapa en exempeldatabas
- Skapa en exempeldatabas att använda med exemplet. Vi använde Microsoft Access för att skapa en exempeldatabas med en produkttabell (schema nedan).
- Tre dummy-poster läggs till i tabellen Produkter. Poster i produkttabellen
Skapa en exempelapplikation
Skapa nu ett enkelt skrivbordsprogram i Visual Studio och gör följande.
- Dra “GridControl”-kontrollen från verktygslådan och släpp den i formuläret.
- Släpp fyra knappar från verktygslådan längst ner i formuläret och ställ in deras textegenskap somBind Woksheet, Lägg till rad, Ta bort rad ochUppdatering till databas respektive.
Lägga till namnutrymme och deklarera globala variabler
Eftersom det här exemplet använder en Microsoft Access-databas lägger du till namnområdet System.Data.OleDb överst 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 paketerade under detta namnutrymme.
- 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; |
Fyller Dataset med data från databasen
Anslut nu till exempeldatabasen för att hämta och fylla data i ett DataSet-objekt.
- Använd OleDbDataAdapter-objektet för att ansluta till vår exempeldatabas och fyll en DataSet med data hämtade från produkttabellen i databasen, som visas i 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"); | |
} |
Bindande arbetsblad med DataSet
Bind samman kalkylbladet med tabellen Produkter i datauppsättningen:
- Öppna ett önskat arbetsblad.
- Bind samman kalkylbladet med DataSets produkttabell.
Lägg till följande kod tillBind arbetsblad knappens klickhändelse.
// 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"], ""); |
Ställa in kolumnrubriker för kalkylblad
Det bundna kalkylbladet laddar nu data framgångsrikt men kolumnrubrikerna är märkta A, B och C som standard. Det skulle vara bättre att ställa in kolumnrubrikerna till kolumnnamnen i databastabellen.
Så här ställer du in kalkylbladets kolumnrubriker:
- Hämta bildtexterna för varje kolumn i datatabellen (produkter) i datauppsättningen.
- Tilldela bildtexterna till rubrikerna i kalkylbladskolumner.
Lägg till koden skriven iBind arbetsblad knappens klickhändelse med följande kodavsnitt. 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; | |
} |
Anpassa bredd och stilar för kolumner
För att förbättra utseendet på kalkylbladet ytterligare är det möjligt att ställa in bredden och stilarna för kolumner. Till exempel, ibland består kolumnrubriken eller värdet inuti kolumnen av ett långt antal tecken som inte får plats i cellen. För att lösa sådana problem stöder Aspose.Cells.GridDesktop att ändra bredden på kolumner.
Lägg till följande kod tillBind arbetsblad knapp. 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å kolumner. Följande kod, bifogad tillBind arbetsblad knappen, anpassar kolumnstilarna för att göra dem mer presentabla.
// 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 arbetsblad Knapp.
Lägga till rader
För att lägga till nya rader i ett kalkylblad, använd metoden Worksheet class AddRow. Detta läggs 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 DataSets DataTable). Utvecklare kan lägga till så många rader de vill genom att anropa AddRow-metoden igen och igen. 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öder också radering av rader genom att anropa Worksheet-klassen RemoveRow-metoden. Ta bort en rad med Aspose.Cells.GridDesktop kräver att radens index tas bort.
// 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ägga till ovanstående kod tillTa bort rad knappen och kör programmet. Några få poster visas innan raden tas bort. Välj en rad och klicka påTa bort rad knappen tar bort den valda raden.
Spara ändringar i databasen
Slutligen, för att spara eventuella ändringar som gjorts av användare i kalkylbladet tillbaka till databasen, använd OleDbDataAdapter-objektets uppdateringsmetod. Uppdateringsmetoden tar datakällan (DataSet, DataTable etc.) i 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); |
- Lägg till ovanstående kod tillUppdatering till databas knapp.
- Kör programmet.
- Utför några operationer på kalkylbladets data, kanske lägg till nya rader och redigera eller ta bort befintliga data.
- Klicka sedanUppdatering till databas för att spara ändringarna i databasen.
- Kontrollera databasen för att se att tabellposterna har uppdaterats därefter.