Kann nicht an den Namen der Eigenschaft oder Spalte in der DataSource gebunden werden. Parametername: dataMember

8

Dies ist die Ausnahme, die ich bekomme, wenn ich versuche, an einen System.Type.Name zu binden.

Hier ist was ich mache:

%Vor%

Gibt es einen Trick mit der Bindung an System.Type, ist es nicht erlaubt oder gibt es eine Workaround? Habe keine Probleme mit anderen Typen zu binden.

    
Evgeny 21.10.2008, 00:18
quelle

3 Antworten

3

Eine Problemumgehung gefunden. Machte eine Klasse

%Vor%

hat eine Bindungsquelle erstellt

%Vor%

hat eine Instanz der Klasse erstellt und das Textfeld an sie gebunden.

%Vor%

funktioniert genau wie erforderlich.

    
Evgeny 21.10.2008, 00:42
quelle
11

Tatsächlich gibt es eine spezielle Behandlung von Type ... dieser Ansatz wird in der IDE verwendet, um Meta-Daten im Voraus zu konfigurieren. Wenn Sie IDE-generierte Bindungen betrachten, tun sie Dinge wie:

%Vor%

sagt: "Wenn wir echte Daten bekommen, erwarten wir MyObject isntance (s)"; Wenn Sie nach "Name" fragen, sucht es nach der Namenseigenschaft in MyObject - nicht nach dem Namen der Typinstanz. Dadurch können Grids usw. ihre Metadaten erhalten, ohne auf die echten Daten warten zu müssen. Sie können jedoch nicht an Typ "für echt" binden.

Der System.ComponentModel-Code ist identisch zwischen einfachen Bindungen und Listenbindungen (geben oder nehmen Sie einen Währungsmanager), so dass auch einfache Bindungen dieses Verhalten erben. Ebenso können Sie nicht an Eigenschaften einer Klasse binden, die IList / IListSource implementiert, da dies auf eine spezielle Weise interpretiert wird.

Ihre Extraklasse scheint ein vernünftiger Ansatz zu sein.

    
Marc Gravell 21.10.2008 05:55
quelle
0

Einer der möglichen Gründe für diesen Fehler ist, dass Tabelle / Dataset keine Spalte angegeben hat. Speziell, im Falle von typisierten DataSet sicherstellen, dass Sie richtige Namen in XSD mit Spaltennamen aus Tabelle

übereinstimmen     
Siddhanath Lawand 12.01.2011 04:33
quelle

Tags und Links