Die Bindung an eine Liste using DataBinder.Eval
-
30-09-2019 - |
Frage
Ich habe folgendes Objekt:
CrossTabDataObject
{
string RowName{get;set;};
int RowId{get;set;}
List<string> CellContents = new List <string>();
//Constructor..... etc.
}
Ich baue eine dynamische Kreuztabellen- Gitter in asp.net mit Gridview 3.5
Ich möchte binden an CellContents [0] für dynamische Spalte 1, CellContents [1] für die dynamische Spalte 2 (dynamische Spalte 0 das RowName Feld aus der CrossTabDataObject) etc. Ich bin mit:
object boundValueObj = null;
Control ctrl = (Control)sender;
IDataItemContainer dataItemContainer = (IDataItemContainer)ctrl.NamingContainer;
boundValueObj = DataBinder.Eval(dataItemContainer.DataItem, strSelectedID);
Dieser Code in der InstantiateIn Funktion des Gridview wie ich Drop bin Erstellen von Listenvorlagen in jeder Zelle der Kreuztabelle.
Ich habe Code (nicht dargestellt), dass Sätze strSelectedID auf der Säule je geschaffen.
Wenn strSelectedID auf „RowName“ für dynamische Spalte gleich [0] die DataBinder.Eval Funktion funktioniert gut und setzt boundValueObj wie erwartet. Das Problem kommt, wenn strSelectedID auf "CellContents [n]" gesetzt ist, wobei n die Spalte Index.
DataBinder.Eval funktioniert nur mit Eigenschaften und Felder von Objekten. Wie bekomme ich diese um?
Danke,
Rich.
Lösung
OK - dumme Fehler von mir
Ändern:
CrossTabDataObject
{
string RowName{get;set;};
int RowId{get;set;}
List<string> CellContents = new List <string>();
//Constructor..... etc.
}
zu:
CrossTabDataObject
{
string RowName{get;set;};
int RowId{get;set;}
List<string> CellContents{get;set;}
//Constructor
public CrossTabDataObject()
{
CellContents = new List<string>();
}
}
machte den Unterschied. Mit anderen Worten machte ich CellContents eine Eigenschaft der Klasse.
Rich.