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

  1. 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).

todo:imagen_alternativa_texto

  1. Se agregan tres registros ficticios a la tabla Productos. Registros en la tabla Productos

todo:imagen_alternativa_texto

Crear una aplicación de muestra

Ahora cree una aplicación de escritorio simple en Visual Studio y haga lo siguiente.

  1. Arrastre el control “GridControl” desde la caja de herramientas y suéltelo en el formulario.
  2. 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.

  1. 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.

  1. 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:

  1. Acceda a una hoja de trabajo deseada.
  2. 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:

  1. Obtenga los títulos para cada columna de DataTable (Productos) en el DataSet.
  2. 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);
  1. Agregue el código anterior alActualizar a la base de datos botón.
  2. Ejecute la aplicación.
  3. Realice algunas operaciones en los datos de la hoja de trabajo, tal vez agregando nuevas filas y editando o eliminando datos existentes.
  4. Luego haga clicActualizar a la base de datos para guardar los cambios en la base de datos.
  5. Verifique la base de datos para ver que los registros de la tabla se hayan actualizado en consecuencia.