Question

Je l'objet suivant:

CrossTabDataObject
{
   string RowName{get;set;};
   int RowId{get;set;}
   List<string> CellContents = new List <string>();
   //Constructor..... etc.

}

Je construis une grille de tableau croisé dynamique à l'aide de GridView en asp.net 3.5

Je souhaite lier à CellContents [0] de la colonne dynamique 1, CellContents [1] pour la colonne dynamique 2 (colonne dynamique 0 est le champ de RowName du CrossTabDataObject) etc. J'utilise:

object boundValueObj = null;
Control ctrl = (Control)sender;
IDataItemContainer dataItemContainer = (IDataItemContainer)ctrl.NamingContainer;
boundValueObj = DataBinder.Eval(dataItemContainer.DataItem, strSelectedID);

Ce code est dans la fonction InstantiateIn du gridview que je crée des modèles de menu déroulant la liste dans chaque cellule du tableau croisé.

Je code (non représenté) qui strSelectedID ensembles en fonction de la colonne en cours de création.

Quand strSelectedID est égal à « RowName » pour la colonne dynamique [0] la fonction DataBinder.Eval fonctionne très bien et définit boundValueObj comme prévu. Le problème vient quand strSelectedID est réglé sur « CellContents [n] » où n est l'indice de la colonne.

DataBinder.Eval fonctionne uniquement avec les propriétés et les champs d'objets. Comment puis-je contourner cela?

Merci,

Rich.

Était-ce utile?

La solution

OK - erreur stupide par moi

Modification:

CrossTabDataObject
{
   string RowName{get;set;};
   int RowId{get;set;}
   List<string> CellContents = new List <string>();
   //Constructor..... etc.

}

à:

CrossTabDataObject
{
   string RowName{get;set;};
   int RowId{get;set;}
   List<string> CellContents{get;set;}
   //Constructor
   public CrossTabDataObject()
   {
     CellContents = new List<string>();
   }

}

fait toute la différence. Autrement dit, je fait CellContents une propriété de la classe.

Rich.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top