Implementación de la función de enlace de datos de GridDesktop en las hojas de trabajo
Creación de una base de datos de muestra
- Cree una base de datos de muestra para usar con el ejemplo. Usamos Microsoft Access para crear una base de datos de muestra con una tabla de productos (esquema a continuación).
- Se agregan tres registros ficticios a la tabla Productos. Registros en la tabla Productos
Crear una aplicación de muestra
Ahora cree una aplicación de escritorio simple en Visual Studio y haga lo siguiente.
- Arrastre el control “GridControl” desde la caja de herramientas y suéltelo en el formulario.
- Coloque cuatro botones de la caja de herramientas en la parte inferior del formulario y establezca su propiedad de texto comoEncuadernar hoja de trabajo, Añadir fila, Borrar fila yActualizar a la base de datos respectivamente.
Agregar espacio de nombres y declarar variables globales
Dado que este ejemplo usa una base de datos de Access Microsoft, agregue el espacio de nombres System.Data.OleDb en la parte superior del código.
// 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; |
Ahora puede usar las clases empaquetadas en este espacio de nombres.
- Declarar variables globales.
// 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; |
Llenar DataSet con datos de la base de datos
Ahora conéctese a la base de datos de muestra para obtener y completar datos en un objeto DataSet.
- Utilice el objeto OleDbDataAdapter para conectarse con nuestra base de datos de muestra y completar un conjunto de datos con datos obtenidos de la tabla de productos en la base de datos, como se muestra en el código a continuación.
// 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"); | |
} |
Hoja de trabajo vinculante con DataSet
Vincule la hoja de trabajo con la tabla Productos del conjunto de datos:
- Acceda a una hoja de trabajo deseada.
- Vincule la hoja de trabajo con la tabla Productos del conjunto de datos.
Agregue el siguiente código a laEncuadernar hoja de trabajo evento de clic del botón.
// 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"], ""); |
Configuración de encabezados de columna de la hoja de trabajo
La hoja de trabajo enlazada ahora carga los datos correctamente, pero los encabezados de las columnas están etiquetados como A, B y C de forma predeterminada. Sería mejor establecer los encabezados de las columnas en los nombres de las columnas en la tabla de la base de datos.
Para establecer los encabezados de columna de la hoja de trabajo:
- Obtenga los títulos para cada columna de DataTable (Productos) en el DataSet.
- Asigne los títulos a los encabezados de las columnas de la hoja de trabajo.
Añada el código escrito en elEncuadernar hoja de trabajo evento de clic del botón con el siguiente fragmento de código. Al hacer esto, los encabezados de columna antiguos (A, B y C) se reemplazarán con ProductID, ProductName y 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; | |
} |
Personalización del ancho y los estilos de las columnas
Para mejorar aún más el aspecto de la hoja de trabajo, es posible establecer el ancho y los estilos de las columnas. Por ejemplo, a veces, el encabezado de la columna o el valor dentro de la columna consta de una gran cantidad de caracteres que no caben dentro de la celda. Para resolver estos problemas, Aspose.Cells.GridDesktop admite cambiar el ancho de las columnas.
Agregue el siguiente código a laEncuadernar hoja de trabajo botón. Los anchos de columna se personalizarán de acuerdo con la nueva configuración.
// 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 también admite la aplicación de estilos personalizados a las columnas. El siguiente código, adjunto alEncuadernar hoja de trabajo botón, personaliza los estilos de columna para hacerlos más presentables.
// 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); | |
} |
Ahora ejecute la aplicación y haga clic en elEncuadernar hoja de trabajo Botón.
Adición de filas
Para agregar nuevas filas a una hoja de trabajo, use el método AddRow de la clase Worksheet. Esto agrega una fila vacía en la parte inferior y se agrega una nueva DataRow a la fuente de datos (aquí, se agrega una nueva DataRow a la DataTable del DataSet). Los desarrolladores pueden agregar tantas filas como deseen llamando al método AddRow una y otra vez. Cuando se ha agregado una fila, los usuarios pueden ingresar valores en ella.
// 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(); |
Eliminación de filas
Aspose.Cells.GridDesktop también admite la eliminación de filas llamando al método RemoveRow de la clase Worksheet. Eliminar una fila con Aspose.Cells.GridDesktop requiere que se elimine el índice de la fila.
// 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); |
Agregando el código anterior alBorrar fila y ejecute la aplicación. Se muestran algunos registros antes de que se elimine la fila. Seleccionando una fila y haciendo clic en elBorrar fila El botón elimina la fila seleccionada.
Guardar cambios en la base de datos
Finalmente, para guardar los cambios realizados por los usuarios en la hoja de trabajo en la base de datos, use el método Update del objeto OleDbDataAdapter. El método Update toma la fuente de datos (DataSet, DataTable, etc.) de la hoja de trabajo para actualizar la base de datos.
// 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); |
- Agregue el código anterior alActualizar a la base de datos botón.
- Ejecute la aplicación.
- Realice algunas operaciones en los datos de la hoja de trabajo, tal vez agregando nuevas filas y editando o eliminando datos existentes.
- Luego haga clicActualizar a la base de datos para guardar los cambios en la base de datos.
- Verifique la base de datos para ver que los registros de la tabla se hayan actualizado en consecuencia.