Vinculación de una hoja de trabajo a un objeto de colección personalizado mediante GridWeb
Encuadernación de una hoja de trabajo con una colección personalizada
Para ilustrar esta característica, este artículo explica cómo crear una aplicación de muestra, paso a paso. Primero, cree una colección personalizada y luego use esa colección para enlazar con una hoja de trabajo.
Paso 1: crear un registro personalizado
Antes de crear una colección personalizada, cree una clase para contener los registros personalizados que se almacenarán en la colección. El propósito de este artículo es dar una idea de cómo crear sus propias colecciones personalizadas y vincularlas con Aspose.Cells.GridWeb, de modo que la forma de crear el registro personalizado depende de usted.
El siguiente ejemplo usa la clase MyCustomRecord que contiene cinco campos privados y cinco propiedades públicas que controlan el acceso a los campos privados. Aquí está la estructura de las propiedades:
- La propiedad StringField1 para leer y escribircampo de cadena1 (cadena).
- La propiedad ReadonlyField2 para solo leercampo de cuerdas2 (cadena).
- La propiedad DateField1 para leer y escribircampo de fecha1 (Fecha y hora).
- La propiedad IntField1 para leer y escribirintfield1 (entero).
- La propiedad DoubleField1 para leer y escribircampo doble1 (doble).
C#
//Creating a class that will act as record for the custom collection
public class MyCustomRecord
{
//Private data members
private string stringfield1;
private string stringfield2 = "ABC";
private DateTime datefield1;
private int intfield1;
private double doublefield1;
//Creating a string property
public string StringField1
{
get { return stringfield1; }
set { stringfield1 = value; }
}
//Creating a readonly string property
public string ReadonlyField2
{
get { return stringfield2; }
}
//Creating a DateTime property
public DateTime DateField1
{
get { return datefield1; }
set { datefield1 = value; }
}
//Creating an int property
public int IntField1
{
get { return intfield1; }
set { intfield1 = value; }
}
//Creating a double property
public double DoubleField1
{
get { return doublefield1; }
set { doublefield1 = value; }
}
}
Paso 2: crear una colección personalizada
Ahora, cree una colección personalizada para agregar registros de clientes y acceder a ellos. Para hacerlo simple, este ejemplo usa la clase MyCollection que contiene un indexador de solo lectura. Usando este indexador, podemos obtener cualquier registro personalizado almacenado en la colección.
C#
//Creating a custom collection
public class MyCollection : CollectionBase
{
//Leaving the collection constructor empty
public MyCollection()
{
}
//Creating a readonly property for custom collection. This Item property is used by GridWeb control to
//determine the collection's type
public MyCustomRecord this[int index]
{
get { return (MyCustomRecord)this.List[index]; }
}
}
Paso 3: Encuadernación de una hoja de trabajo con una colección personalizada
El proceso de creación de una colección personalizada está completo. Ahora use la colección personalizada para enlazar a una hoja de trabajo en Aspose.Cells.GridWeb. Primero cree un formulario web, agréguele el control GridWeb y agregue algo de código.
Para usar la colección personalizada para el enlace, primero cree un objeto de la clase MyCollection (creado en el paso anterior). Luego cree y agregue objetos MyCustomRecord al objeto MyCollection.
Finalmente, configure el objeto MyCollection como fuente de datos de la hoja de trabajo y vincule la hoja de trabajo con la colección. En este punto, también puede crear reglas de validación para las columnas enlazadas de la hoja de trabajo.
C#
//Implementing Page_Load event handler
protected void Page_Load(object sender, EventArgs e)
{
if (Page.IsPostBack == false && this.GridWeb1.IsPostBack == false)
{
//Creating an object of custom collection
MyCollection list = new MyCollection();
//Creating an instance of Random class
System.Random rand = new System.Random();
//Creating a loop that will run 5 times
for (int i = 0; i < 5; i++)
{
//Creating an object of Custom Record
MyCustomRecord rec = new MyCustomRecord();
//Initializing all properties of Custom Record
rec.DateField1 = DateTime.Now;
rec.DoubleField1 = rand.NextDouble() * 10;
rec.IntField1 = rand.Next(20);
rec.StringField1 = "ABC_" + i;
//Adding Custom Record to Collection
((IList)list).Add(rec);
}
//Accessing a desired worksheet
GridWorksheet sheet = GridWeb1.WorkSheets[0];
//Setting the Data Source of worksheet
sheet.DataSource = list;
//Creating columns automatically
sheet.CreateAutoGenratedColumns();
//Setting the validation type of value to DateTime
sheet.BindColumns[2].Validation.ValidationType = ValidationType.DateTime;
//Binding worksheet
sheet.DataBind();
//Assigning an event handler to InitializeNewBindRow event of the worksheet
//sheet.InitializeNewBindRow += new InitializeNewBindRowHandler(GridWeb1_InitializeNewBindRow);
}
}
Paso 4: Manejo del evento InitializeNewBindRow de la hoja de trabajo
En el código anterior, es posible que haya notado una línea adicional de código que se usa para asignar el controlador de eventos GridWeb1_InitializeNewBindRow a InitializeNewBindRow de la hoja de trabajo. Este evento se activa cada vez que se agrega una nueva fila enlazada a la hoja de trabajo. Creamos un controlador de eventos para este evento debido a la propiedad DateField1 del objeto MyCustomRecord.
Aspose.Cells.GridWeb se inicializa automáticamenteEn t ydoble valores con**cero (0)**cada vez que se agrega una nueva fila enlazada al control GridWeb. Para las fechas, nos gustaría que el control GridWeb agregue automáticamente la fecha actual del sistema. Para ello, hemos creado el controlador de eventos GridWeb1_InitializeNewBindRow para el evento InitializeNewBindRow.
Acceda a una instancia particular de la clase MyCustomRecord desde GridWeb usando el argumento bindObject y luego asigne la fecha actual del sistema a su propiedad DateField1.
C#
//Creating GridWeb1_InitializeNewBindRow event handler
private void GridWeb1_InitializeNewBindRow(GridWorksheet sender, object bindObject)
{
//Accessing that custom record object that is newly bound
MyCustomRecord rec = (MyCustomRecord)bindObject;
//Initializing the DateTime of a property when a new row gets bound to the database
rec.DateField1 = DateTime.Now;
}
Paso 5: ejecutar la aplicación
Ejecute la aplicación presionandoCtrl+F5 o haciendo clic en elComenzar botón en VS.NET. El formulario web se abre en una nueva ventana del navegador.
Hoja de trabajo encuadernada con una colección personalizada
Haga clic con el botón derecho en el control GridWeb para agregar o eliminar un registro. Por ejemplo, agregue un nuevo registro a la hoja de cálculo seleccionandoAñadir fila opción.
Seleccionar la opción Agregar fila del menú
Cuando se agrega una nueva fila a la hoja de cálculo, las celdas contienen datos predeterminados, incluida la fecha actual del sistema.
Nueva fila agregada a la hoja de trabajo con datos predeterminados
Después de realizar cambios en los datos, haga clic enAhorrar oEnviar para guardar sus cambios.
Guardar cambios haciendo clic en el botón Guardar