Announcement

Collapse
No announcement yet.

Datenbindung von 2 Textboxen an ein Datenfeld

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Datenbindung von 2 Textboxen an ein Datenfeld

    Hallo,

    ich habe zwei textboxen(Unterschiedliche Formatierung) an ein Datenfeld gebunden, beim erstellen der Bindungen werden die richtigen Werte in den textboxen angezeigt. Beim Ändern eines Wertes wird das Datenfeld korrekt geändert aber die Änderung überträgt sich nicht auf die Zweite Textbox. Habt ihr vielleicht eine Idee.

    gruß
    nepal

  • #2
    Hallo,
    der Grund für dieses Verhalten liegt darin, dass der im TextBox-Control geänderte Wert nur dann in das DataSet zurückgeschrieben wird, wenn eine der beiden folgenden Situationen eintritt: <br>
    a) Der virtuelle Datensatzzeiger wird auf einen anderen Datensatz positioniert <br>
    b) Die CurrencyManager-Methode <b>EndCurrentEdit</b> wird aufgerufen.
    <br>
    Das folgende Beispiel zeigt, wie beim Erhalt des Eingabefokus auch das 2. TextBox-Control sofort den im 1. TextBox-Control geänderten Wert anzeigt:
    <code>
    private DataSet aDS;
    private CurrencyManager aCM;

    private void Form1_Load(object sender, System.EventArgs e)
    {
    //neue DataTable erzeugen
    DataTable aNewDataTable = new DataTable();
    aNewDataTable.TableName = "TestTbl";
    aNewDataTable.Columns.Add("Nachname", typeof(String));
    aNewDataTable.Columns.Add("Vorname", typeof(String));
    aNewDataTable.Columns.Add("Alter", typeof(Int32));
    // Primärschlüssel
    aNewDataTable.PrimaryKey = new DataColumn[] {aNewDataTable.Columns[0],aNewDataTable.Columns[1]};
    aNewDataTable.MinimumCapacity = 10;
    // Datensätze eintragen
    aNewDataTable.Rows.Add(new Object[] {"Kosch", "Andreas", 42});
    aNewDataTable.Rows.Add(new Object[] {"Mustermann", "Manfred", 50});
    aNewDataTable.Rows.Add(new Object[] {"Ritz", "Bernd", 45});
    // Ergebnis anzeigen
    aDS = new DataSet();
    aDS.Tables.Add(aNewDataTable);
    dataGrid1.DataSource = aDS.Tables[0];
    textBox1.DataBindings.Add("Text", aDS.Tables[0], "Nachname");
    textBox2.DataBindings.Add("Text", aDS.Tables[0], "Nachname");
    // CurrencyManager als Verweis abfordern
    aCM = (CurrencyManager)this.BindingContext[aDS, aDS.Tables[0].TableName];
    }

    private void textBox2_Enter(object sender, System.EventArgs e)
    {
    aCM.EndCurrentEdit();
    }
    </code&gt

    Comment

    Working...
    X