BindingSource und AddNew Problem mit Default values

19/02/2010 - 15:57 von Tom | Report spam
Hi Leute,

habe ein kleines Problem mit der Bindingsource. Ich habe eine Tabelle
mit 10 Felder und eine Form mit 8 Feldern die über die bindingSource
an 8 Feldern aus der Tabelle gebunden sind.
Wenn ich bindingSource1.AddNew() mache werden die Felder in der Form
auch leer angezeigt.
Die fehlenden 2 Felder sollen jedoch mit Defaultwerten gefüllt werden
und in der Form nicht sichtbar sein.
Eines dieser Felder ist z.B.LoeschKZ welches bei einem neuen Datensatz
per default auf "False" gesetzt werden soll.
Erstelle ich auf der Form 2 textboxen und binde diese an die
bindingsource1 kann ich nach dem bindingSource1.AddNew() mit
txt_loeschKZ.text = "False" den wert zuweisen und er taucht im DataSet
auf. Stelle ich die Eigenschaft der 2 Textboxen auf visible = false
habe ich im DataSet das Feld LoeschKZ mit null gefüllt. Er zieht dann
nicht mehr den Wert aus der Textbox.

Daher meine Frage: Wie bekomme ich das LoeschKZ im DataSet angezeigt
ohne die textboxen visible zu machen? Geht das vielleicht auch ohne
versteckte Textboxen in der Form? D.h. komme ich irgendwie an diesen
leeren Datensatz ran um die 2 Felder manuell zu befüllen?

Hier mal mein (stark vereinfachter ) Code.

private void Load()
{
reportConfigDataSet1 = reportData.GetReportLevelName();
this.bindingSource1.DataSource reportConfigDataSet1.ReportLevelName;
if (m_Insert)
{
AddNewRecord();
}
}

private void AddNewRecord()
{
bindingSource1.AddNew();
}

private void OK_Button_Click(object sender, EventArgs e)
{
bindingSource1.EndEdit();
// Save the changes

reportData.SaveReportLevelName(reportConfigDataSet1);
}

Schon mal vielen Dank für eure Hilfe

Gruß
Tom
 

Lesen sie die antworten

#1 Marcel Roma
20/02/2010 - 00:12 | Warnen spam
Hallo Tom,

Du musst auf Datenebene agieren. Das Setzen des TextBox-Steuerelements hat
keinen Effekt auf die Bindungsdatenquelle, wenn die TextBox unsichtbar ist:

private void OK_Button_Click(object sender, EventArgs e) {
DataRowView currentRow = (DataRowView)customersBindingSource.Current;
if (currentRow != null) {
currentRow.Row["LoeschKZ"] = true;
bindingSource1.EndEdit();
// Save the changes
reportData.SaveReportLevelName(reportConfigDataSet1);
}
}

Gruss
Marcel

Ähnliche fragen