Liaison de la feuille de calcul à un objet de collection personnalisée à l aide de GridWeb
Liaison d’une feuille de calcul avec une collection personnalisée
Pour illustrer cette fonctionnalité, cet article explique comment créer une application exemple, étape par étape. Tout d’abord, créez une collection personnalisée, puis utilisez cette collection pour la lier à une feuille de calcul.
Étape 1: Création d’un enregistrement personnalisé
Avant de créer une collection personnalisée, créez une classe pour contenir les enregistrements personnalisés qui seront stockés dans la collection. Le but de cet article est de donner une idée de comment créer vos propres collections personnalisées et les lier à GridWeb, donc la façon dont vous créez l’enregistrement personnalisé vous revient.
L’exemple ci-dessous utilise la classe MyCustomRecord qui contient cinq champs privés et cinq propriétés publiques qui contrôlent l’accès aux champs privés. Voici la structure des propriétés:
- La propriété StringField1 pour lire et écrire stringfield1 (chaîne).
- La propriété ReadonlyField2 pour seulement lire stringfield2 (chaîne).
- La propriété DateField1 pour lire et écrire datefield1 (DateTime).
- La propriété IntField1 pour lire et écrire intfield1 (entier).
- La propriété DoubleField1 pour lire et écrire doublefield1 (double).
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; }
}
}
Étape 2 : Création d’une collection personnalisée
Maintenant, créez une collection personnalisée pour ajouter des enregistrements de clients et y accéder. Pour simplifier, cet exemple utilise la classe MyCollection qui contient un indexeur en lecture seule. En utilisant cet indexeur, nous pouvons obtenir n’importe quel enregistrement personnalisé stocké dans la collection.
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]; }
}
}
Étape 3 : Liaison d’une feuille de calcul avec une collection personnalisée
Le processus de création d’une collection personnalisée est terminé. Maintenant, utilisez la collection personnalisée pour la lier à une feuille de calcul dans Aspose.Cells.GridWeb. Créez d’abord un formulaire web, ajoutez le contrôle GridWeb et ajoutez du code.
Pour utiliser la collection personnalisée pour la liaison, créez d’abord un objet de la classe MyCollection (créé dans l’étape précédente). Ensuite, créez et ajoutez des objets MyCustomRecord à l’objet MyCollection.
Enfin, définissez l’objet MyCollection comme source de données de la feuille de calcul et liez la feuille de calcul avec la collection. À ce stade, vous pouvez également créer des règles de validation pour les colonnes liées de la feuille de calcul.
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);
}
}
Étape 4 : Gestion de l’événement InitializeNewBindRow de la feuille de calcul
Dans le code ci-dessus, vous avez peut-être remarqué une ligne de code supplémentaire utilisée pour attribuer le gestionnaire d’événements GridWeb1_InitializeNewBindRow à InitializeNewBindRow de la feuille de calcul. Cet événement est déclenché chaque fois qu’une nouvelle ligne liée est ajoutée à la feuille de calcul. Nous avons créé un gestionnaire d’événements pour cet événement en raison de la propriété DateField1 de l’objet MyCustomRecord.
Aspose.Cells.GridWeb initialise automatiquement les valeurs int et double avec zéro (0) chaque fois qu’une nouvelle ligne liée est ajoutée au contrôle GridWeb. Pour les dates, nous aimerions que le contrôle GridWeb ajoute automatiquement la date actuelle du système. Pour ce faire, nous avons créé le gestionnaire d’événements GridWeb1_InitializeNewBindRow pour l’événement InitializeNewBindRow.
Accédez à une instance particulière de la classe MyCustomRecord à partir de GridWeb en utilisant l’argument bindObject, puis attribuez la date système actuelle à sa propriété 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;
}
Étape 5 : Exécution de l’application
Exécutez l’application en appuyant sur Ctrl+F5 ou en cliquant sur le bouton Démarrer dans VS.NET. Le formulaire web s’ouvre dans une nouvelle fenêtre de navigateur.
Feuille de calcul liée à une collection personnalisée
Cliquez avec le bouton droit sur le contrôle GridWeb pour ajouter ou supprimer un enregistrement. Par exemple, ajoutez un nouvel enregistrement à la feuille de calcul en sélectionnant l’option Ajouter une ligne.
Sélection de l’option Ajouter une ligne dans le menu
Lorsqu’une nouvelle ligne est ajoutée à la feuille de calcul, les cellules contiennent des données par défaut, y compris la date système actuelle.
Nouvelle ligne ajoutée à la feuille de calcul avec des données par défaut
Après avoir apporté des modifications aux données, cliquez sur Enregistrer ou Soumettre pour enregistrer vos modifications.
Enregistrer les modifications en cliquant sur le bouton Enregistrer