Laden...

DataBinding mit CheckBox und radioButton möglich?

Erstellt von Deletemaster vor 18 Jahren Letzter Beitrag vor 18 Jahren 4.769 Views
Deletemaster Themenstarter:in
155 Beiträge seit 2005
vor 18 Jahren
DataBinding mit CheckBox und radioButton möglich?

Hallo wieder einmal,
bis jetzt habe ich die Werte für die Steuerelemente mit dem DataReader ausgelesen...
Da ich alle Werte in ein DataSet lade um updates durchführen zu können, wäre es nützlich wenn ich diese Steuerelemente mittels DataBindings "binden" könnte.
Allerdings funktioniert die Eigenschaftenangabe nicht so richtig:

checkbox_feldname.DataBindings.Add("bool", dt, "feldname");

radioButton_feldname.DataBindings.Add("bool", dt, "feldname");

irgendwie muss ich doch angeben wie beim reader:

if(reader["feldname"].ToString() == "1")
{
checkbox_feldname.Checked = true;
}
angeben.

Hat jemand bitte eine Lösung?
Danke für Eure Hilfe

6.862 Beiträge seit 2003
vor 18 Jahren

Du bindest falsch. Als erstes Argument kommt nicht der Datentyp(in deinem Fall bool), sondern das Property an das du den Wert , der in "feldname" steht binden möchtest. Allerdings sollte das dann vom gleichen Typ wie des Property sein, sprich bool und nicht int.

Baka wa shinanakya naoranai.

Mein XING Profil.

Deletemaster Themenstarter:in
155 Beiträge seit 2005
vor 18 Jahren

Der Wert in der db ist vom Typ tinyint also 0 oder 1

Wie muss dann die Bindung genau aussehen, um die CheckBox bzw. den radioButton auf Ccecked = true zu setzen.

wie gesagt beim arbeiten mit dem reader funktioniert es

aber beim Binding kann der Typ nicht verarbeitet werden.

Kannst du mir bitte ein Beispiel geben, wie ich die rb bzw. die cb anbinden kann?

Danke

Deletemaster Themenstarter:in
155 Beiträge seit 2005
vor 18 Jahren

Also ich habe zwar ne Möglichkeit gefunden, aber diese Möglichkeit sieht mir sehr "unsauber" aus...

ich habe ein temporäres label angelegt und mit Hide() versteckt.

tmplbl_Robbi.DataBindings.Add("Text", dt, "robbi");

if(tmplbl_Robbi.Text =="1")
{
checkbox_Robbi.Checked = true;
}
else
{
checkbox_Robbi.Checked = false;
}

ist bestimmt nicht das non plus ultra...
habt ihr ne andere Möglichkeit?

Danke

S
1.047 Beiträge seit 2005
vor 18 Jahren

mit deiner lösung hast du aber kein databinding, es sei denn du führst deinen if... else... code in einem change-event vom label aus... denn sonst mußt du ja wieder per hand den wert im dataset setzen... databinding ist ja gerade dazu da das automatisch die aktuellen werte angezeit und in auch bei änderung im dataset stehen

gibts einen grund warum das feld vom typ tinyint und nicht boolean ist?

Deletemaster Themenstarter:in
155 Beiträge seit 2005
vor 18 Jahren

wenn ich in mysql eine table anlege und einem feld die eigenschaft bool gebe
wird diese eigenschaft automatisch in tinyint umgewandelt.

ich glaub in phpmyadmin
wird bei den datentypen auch kein boolean angezeigt.

aber du hast verdammt recht
jetzt muss ich diese sache auch noch im Change_Event unterbringen puhhh

hast du vielleicht ne bessere Möglichkeit parat?

Danke

D
155 Beiträge seit 2005
vor 18 Jahren

Also ich habe dazu eine eigene Methode die ich dynamic binding nenne. Es wird dynamisch gebunden, heißt, wenn ein Nullwert vorkommt wird das Binding temp. aufgehoben.
Ist aber auch nicht ganz einfach.
Muss man die Birne anstrengen 😉

S
1.047 Beiträge seit 2005
vor 18 Jahren

vielleicht etwas überzogen aber, falls man dem datagrid beibringen kann custom controls zu benutzen, wie wärs mit ner abgeleiteten checkbox wo du eine neue property einfügst die int-werte annimmt... 0 setzt auf false, alles andere auf true =)

ansonsten so wie du es schon machst + event halt...