Binden des Arbeitsblatts an ein benutzerdefiniertes Sammlungsobjekt mithilfe von GridWeb

Binden eines Arbeitsblatts mit einer benutzerdefinierten Sammlung

Um diese Funktion zu veranschaulichen, wird in diesem Artikel Schritt für Schritt beschrieben, wie Sie eine Beispielanwendung erstellen. Erstellen Sie zuerst eine benutzerdefinierte Sammlung und verwenden Sie diese Sammlung dann zum Binden mit einem Arbeitsblatt.

Schritt 1: Erstellen eines benutzerdefinierten Datensatzes

Erstellen Sie vor dem Erstellen einer benutzerdefinierten Sammlung eine Klasse für die benutzerdefinierten Datensätze, die in der Sammlung gespeichert werden. Der Zweck dieses Artikels besteht darin, Ihnen eine Vorstellung davon zu vermitteln, wie Sie Ihre eigenen benutzerdefinierten Sammlungen erstellen und sie mit Aspose.Cells.GridWeb binden können. Wie Sie den benutzerdefinierten Datensatz erstellen, liegt also bei Ihnen.

Das folgende Beispiel verwendet die MyCustomRecord-Klasse, die fünf private Felder und fünf öffentliche Eigenschaften enthält, die den Zugriff auf die privaten Felder steuern. Hier ist die Struktur der Eigenschaften:

  • Die StringField1-Eigenschaft zum Lesen und SchreibenZeichenkettenfeld1 (Schnur).
  • Die ReadonlyField2-Eigenschaft, die nur gelesen werden sollZeichenfolgenfeld2 (Schnur).
  • Die DateField1-Eigenschaft zum Lesen und SchreibenDatumsfeld1 (Terminzeit).
  • Die IntField1-Eigenschaft zum Lesen und Schreibenintfield1 (ganze Zahl).
  • Die DoubleField1-Eigenschaft zum Lesen und SchreibenDoppelfeld1 (doppelt).

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; }

    }

}

Schritt 2: Erstellen einer benutzerdefinierten Sammlung

Erstellen Sie jetzt eine benutzerdefinierte Sammlung, um Kundendatensätze hinzuzufügen und darauf zuzugreifen. Der Einfachheit halber verwendet dieses Beispiel die MyCollection-Klasse, die einen schreibgeschützten Indexer enthält. Mit diesem Indexer können wir jeden benutzerdefinierten Datensatz abrufen, der in der Sammlung gespeichert ist.

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]; }

    }

}

Schritt 3: Binden eines Arbeitsblatts mit einer benutzerdefinierten Sammlung

Der Vorgang zum Erstellen einer benutzerdefinierten Sammlung ist abgeschlossen. Verwenden Sie nun die benutzerdefinierte Sammlung zum Binden an ein Arbeitsblatt in Aspose.Cells.GridWeb . Erstellen Sie zuerst ein Webformular, fügen Sie das GridWeb-Steuerelement hinzu und fügen Sie etwas Code hinzu.

Um die benutzerdefinierte Sammlung für die Bindung zu verwenden, erstellen Sie zunächst ein Objekt der MyCollection-Klasse (im obigen Schritt erstellt). Erstellen Sie dann MyCustomRecord-Objekte und fügen Sie sie dem MyCollection-Objekt hinzu.

Legen Sie abschließend das MyCollection-Objekt als Datenquelle des Arbeitsblatts fest und binden Sie das Arbeitsblatt an die Sammlung. An dieser Stelle können Sie auch Validierungsregeln für die gebundenen Spalten des Arbeitsblatts erstellen.

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);

    }

}

Schritt 4: Behandeln des InitializeNewBindRow-Ereignisses des Arbeitsblatts

Im obigen Code ist Ihnen möglicherweise eine zusätzliche Codezeile aufgefallen, mit der der Ereignishandler GridWeb1_InitializeNewBindRow der InitializeNewBindRow des Arbeitsblatts zugewiesen wird. Dieses Ereignis wird ausgelöst, wenn dem Arbeitsblatt eine neue gebundene Zeile hinzugefügt wird. Wir haben für dieses Ereignis aufgrund der DateField1-Eigenschaft des MyCustomRecord-Objekts eine Ereignisbehandlungsroutine erstellt.

Aspose.Cells. GridWeb wird automatisch initialisiertint unddoppelt Werte mit**Null (0)**immer dann, wenn dem GridWeb-Steuerelement eine neue gebundene Zeile hinzugefügt wird. Für Datumsangaben möchten wir, dass das GridWeb-Steuerelement automatisch das aktuelle Datum aus dem System hinzufügt. Dazu haben wir den Ereignishandler GridWeb1_InitializeNewBindRow für das Ereignis InitializeNewBindRow erstellt.

Greifen Sie mit dem bindObject-Argument auf eine bestimmte Instanz der MyCustomRecord-Klasse aus dem GridWeb zu, und weisen Sie dann das aktuelle Systemdatum der DateField1-Eigenschaft zu.

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;

}

Schritt 5: Ausführen der Anwendung

Führen Sie die Anwendung aus, indem Sie entweder drückenStrg+F5 oder klicken Sie auf dieStart Taste in VS.NET. Das Webformular wird in einem neuen Browserfenster geöffnet.

Arbeitsblatt mit einer benutzerdefinierten Sammlung gebunden

todo: Bild_alt_Text

Klicken Sie mit der rechten Maustaste auf das GridWeb-Steuerelement, um einen Datensatz hinzuzufügen oder zu löschen. Fügen Sie dem Arbeitsblatt beispielsweise einen neuen Datensatz hinzu, indem Sie auswählenZeile hinzufügen Möglichkeit.

Wählen Sie die Option Zeile hinzufügen aus dem Menü

todo: Bild_alt_Text

Wenn dem Arbeitsblatt eine neue Zeile hinzugefügt wird, enthalten die Zellen Standarddaten, einschließlich des aktuellen Systemdatums.

Neue Zeile mit Standarddaten zum Arbeitsblatt hinzugefügt

todo: Bild_alt_Text

Nachdem Sie Änderungen an den Daten vorgenommen haben, klicken Sie aufSpeichern odereinreichen um Ihre Änderungen zu speichern.

Speichern Sie die Änderungen, indem Sie auf die Schaltfläche Speichern klicken

todo: Bild_alt_Text

Fazit