Arbeitsblatt an ein angepasstes Sammlungsobjekt binden, indem GridWeb verwendet wird
Ein Arbeitsblatt mit einer benutzerdefinierten Sammlung verbinden
Um dieses Feature zu illustrieren, geht dieser Artikel Schritt für Schritt durch, wie man eine Beispielanwendung erstellt. Erstens, erstellen Sie eine benutzerdefinierte Sammlung und nutzen Sie dann diese Sammlung, um sie an ein Arbeitsblatt zu binden.
Schritt 1: Erstellen eines benutzerdefinierten Datensatzes
Bevor Sie eine benutzerdefinierte Sammlung erstellen, erstellen Sie eine Klasse, um die benutzerdefinierten Datensätze zu halten, die in der Sammlung gespeichert werden. Das Ziel dieses Artikels ist, eine Vorstellung davon zu vermitteln, wie Sie Ihre eigenen benutzerdefinierten Sammlungen erstellen und sie mit GridWeb verbinden können, daher liegt es bei Ihnen, wie Sie den benutzerdefinierten Datensatz erstellen.
Das folgende Beispiel verwendet die Klasse MyCustomRecord, 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 Schreiben von stringfield1 (Zeichenfolge).
- Die ReadonlyField2-Eigenschaft zum nur Lesen von stringfield2 (Zeichenfolge).
- Die DateField1-Eigenschaft zum Lesen und Schreiben von datefield1 (DateTime).
- Die IntField1-Eigenschaft zum Lesen und Schreiben von intfield1 (ganze Zahl).
- Die DoubleField1-Eigenschaft zum Lesen und Schreiben von doublefield1 (Dezimalzahl).
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 von ihnen zuzugreifen. Um es einfach zu halten, verwendet dieses Beispiel die Klasse MyCollection, die einen schreibgeschützten Indexer enthält. Mit diesem Indexer können wir jeden benutzerdefinierten Datensatz aus der Sammlung abrufen.
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: Ein Arbeitsblatt mit einer benutzerdefinierten Sammlung verbinden
Der Vorgang des Erstellens einer benutzerdefinierten Sammlung ist abgeschlossen. Verwenden Sie nun die benutzerdefinierte Sammlung, um sie an ein Arbeitsblatt in Aspose.Cells.GridWeb zu binden. Erstellen Sie zunächst ein Webformular, fügen Sie dem Formular die GridWeb-Steuerelement hinzu und fügen Sie etwas Code hinzu.
Um die benutzerdefinierte Sammlung für die Bindung zu verwenden, erstellen Sie zuerst ein Objekt der Klasse MyCollection (die im obigen Schritt erstellt wurde). Erstellen und fügen Sie dann MyCustomRecord-Objekte zum MyCollection-Objekt hinzu.
Legen Sie abschließend das MyCollection-Objekt als Datenquelle des Arbeitsblatts fest und binden Sie das Arbeitsblatt an die Sammlung. Zu diesem Zeitpunkt 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: Behandlung des InitializeNewBindRow-Ereignisses des Arbeitsblatts
Im obigen Code haben Sie möglicherweise eine zusätzliche Codezeile bemerkt, die verwendet wurde, um den Ereignishandler GridWeb1_InitializeNewBindRow dem InitializeNewBindRow des Arbeitsblatts zuzuweisen. Dieses Ereignis wird ausgelöst, wenn eine neue gebundene Zeile zum Arbeitsblatt hinzugefügt wird. Wir haben einen Ereignishandler für dieses Ereignis erstellt, aufgrund der Eigenschaft DateField1 des MyCustomRecord-Objekts.
Aspose.Cells.GridWeb initialisiert automatisch int und double Werte mit Null (0), wenn eine neue gebundene Zeile dem GridWeb-Steuerelement hinzugefügt wird. Für Datumswerte möchten wir jedoch, dass das GridWeb-Steuerelement automatisch das aktuelle Datum vom System hinzufügt. Dazu haben wir den Ereignishandler GridWeb1_InitializeNewBindRow für das InitializeNewBindRow-Ereignis erstellt.
Greifen Sie mit dem Argument bindObject auf eine bestimmte Instanz der Klasse MyCustomRecord aus dem GridWeb zu und weisen Sie dann dem DateField1-Eigenschaft das aktuelle Systemdatum 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 Strg+F5 drücken oder auf die Start-Schaltfläche in VS.NET klicken. Das Webformular wird in einem neuen Browserfenster geöffnet.
Arbeitsblatt an benutzerdefinierte Sammlung gebunden
Klicken Sie mit der rechten Maustaste auf das GridWeb-Steuerelement, um einen Datensatz hinzuzufügen oder zu löschen. Fügen Sie beispielsweise ein neues Aufzeichnung zum Arbeitsblatt hinzu, indem Sie die Option Zeile hinzufügen auswählen.
Auswahl der Option Zeile hinzufügen im Menü
Wenn eine neue Zeile zum Arbeitsblatt hinzugefügt wird, enthalten die Zellen Standarddaten, einschließlich des aktuellen Systemdatums.
Neue Zeile mit Standarddaten zum Arbeitsblatt hinzugefügt
Nachdem Sie Änderungen an den Daten vorgenommen haben, klicken Sie auf Speichern oder Übermitteln, um Ihre Änderungen zu speichern.
Speichern von Änderungen durch Klicken der Schaltfläche Speichern