2016-09-30 6 views
2

Ich bin ein Binding eine Checkbox an eine Bindingsource, wenn ich nicht auf das Kontrollkästchen klicken, wird ein Null-Wert an meine Datenbank zurückgegeben.Checkbox Databinding Standardwert Null

Dies ist die Datenbindung Code:

checkGehuwd.DataBindings.Add("Checked", PersonenBindingSource, "gehuwd", true, 
      DataSourceUpdateMode.OnPropertyChanged); 

Wie kehre ich einen Standardwert von falsch?

Grüße Andy

+0

Warum nicht Standardwert falsch bei db Einstellung? – Berkay

+0

Ich habe versucht, es immer noch als null zu setzen. –

+1

ist 'gehund' ein Nullable bool? – Crowcoder

Antwort

1

Sie können CheckState Eigenschaft auf diese Weise verwenden, um Daten-Bindung:

checkBox1.DataBindings.Add("CheckState", bs, "DataFieldName", true, 
    DataSourceUpdateMode.OnPropertyChanged, CheckState.Indeterminate); 

diese Weise, wenn der Wert von Null in der Datenquelle abgelegt ist, wird CheckState.Indeterminate in UI angezeigt .

Hinweis

  • Wenn Sie den Standardwert von Spalte 0 oder deaktiviert werden soll, setzen Sie dann die DefaultValue von DataColumn-0.

  • Wenn Sie möchten, dass der Benutzer auch den Wert des Feldes auf null setzt, genügt es, ThreeState die Eigenschaft CheckBox auf true zu setzen.

Beispiel

dt = new DataTable(); 
var c1 = dt.Columns.Add("C1", typeof(int)); 
c1.AllowDBNull = true; 

//Uncomment the next statement if you want default value be 0 = unchecked 
//c1.DefaultValue = 0; 

//Uncomment the next statement if you want to allow the user to set value to null 
//checkBox1.ThreeState = true; 

var bs = new BindingSource(); 
bs.DataSource = dt; 
checkBox1.DataBindings.Add("CheckState", bs, "C1", true, 
    DataSourceUpdateMode.OnPropertyChanged, CheckState.Indeterminate); 
this.bindingNavigator1.BindingSource = bs; 
+0

Dies wird immer noch Nullen einfügen, wenn ich es nicht klicke, auch wenn CheckState.true als Standard gesetzt wird –

+0

Es wird 1 einfügen, wenn Sie auf das Häkchen klicken und das Kontrollkästchen Häkchen anzeigen. Fügt 0 ein, wenn Sie auf klicken und die Markierung entfernen. Fügt Null ein, wenn Sie auf klicken und das Kontrollkästchen zum Definieren festlegen, das ein Quadrat in einem Kontrollkästchen anzeigt. –

+0

Um es zu testen, verwenden Sie einfach den Code, den ich im Beispiel zur Verfügung gestellt habe. Ein solcher Code könnte einfach getestet werden, ohne dass irgendeine Datenbank benötigt wird. –