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

todo:imagen_alternativa_texto

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ú

todo:imagen_alternativa_texto

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

todo:imagen_alternativa_texto

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

todo:imagen_alternativa_texto

Conclusión