TextChanged Databindings Problem

  • VB.NET

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von WhitePage.

    TextChanged Databindings Problem

    Hallo alle miteinander,

    ich habe ein kleines Problem und komme gerade nicht dahinter. In meiner Form habe ich eine Combobox die an die Tabelle Kunden gebunden ist. Ich wähle einen Kunden aus und es wird dann automatisch in Textboxen die Telefonnummer, Email usw. eingetragen. Sind bei dem Kunden jetzt Ansprechpartner hinterlegt (eigene Tabelle Ansprechpartner) kann ich einen auswählen, z.B. mit dem ich gerade telefoniere. Dann wird die Telefonnummer, Email usw. vom Ansprechpartner in die Textboxen eingetragen anstatt die Zentraldaten des Kunden. Hier mein Code:

    VB.NET-Quellcode

    1. Private Sub cbTEAnsprechpartner_TextChanged(sender As Object, e As EventArgs) Handles cbTEAnsprechpartner.TextChanged
    2. If cbTEAnsprechpartner.Text = "" Then
    3. txtTETelefon.DataBindings.Clear()
    4. txtTETelefon.DataBindings.Add("Text", KundenBindingSource, "Telefon")
    5. Else
    6. txtTETelefon.DataBindings.Clear()
    7. txtTETelefon.DataBindings.Add("Text", AnsprechpartnerBindingSource, "Telefon")
    8. End If
    9. If cbTEAnsprechpartner.Text = "" Then
    10. txtTEMobil.DataBindings.Clear()
    11. txtTEMobil.DataBindings.Add("Text", KundenBindingSource, "Mobil")
    12. Else
    13. txtTEMobil.DataBindings.Clear()
    14. txtTEMobil.DataBindings.Add("Text", AnsprechpartnerBindingSource, "Mobil")
    15. End If
    16. If cbTEAnsprechpartner.Text = "" Then
    17. txtTETelefax.DataBindings.Clear()
    18. txtTETelefax.DataBindings.Add("Text", KundenBindingSource, "Telefax")
    19. Else
    20. txtTETelefax.DataBindings.Clear()
    21. txtTETelefax.DataBindings.Add("Text", AnsprechpartnerBindingSource, "Telefax")
    22. End If
    23. If cbTEAnsprechpartner.Text = "" Then
    24. txtTEEmail.DataBindings.Clear()
    25. txtTEEmail.DataBindings.Add("Text", KundenBindingSource, "Email")
    26. Else
    27. txtTEEmail.DataBindings.Clear()
    28. txtTEEmail.DataBindings.Add("Text", AnsprechpartnerBindingSource, "Email")
    29. End If
    30. End Sub

    Jetzt zum Problem:

    1. Wähle ich ein Kunde aus, der einen Ansprechpartner hat, dann wird der erste Ansprechpartner aus der Tabelle ausgewählt. Ich möchte aber, dass der Ansprechpartner erst ausgewählt werden muss und nicht automatisch ausgewählt wird.
    2. Wenn ich 2 Ansprechpartner habe, An1 und An2 und An2 auswähle habe ich danach 2 mal An2 in der Combobox stehen. ?(

    Wäre nice wenn mir jemand weiter helfen könnte.

    lg mo48 :thumbup:

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „mo48“ ()

    Hier nochmal geändert:

    VB.NET-Quellcode

    1. Private Sub cbTEAnsprechpartner_TextChanged(sender As Object, e As EventArgs) Handles cbTEAnsprechpartner.TextChanged
    2. If cbTEAnsprechpartner.Text = "" Then
    3. txtTETelefon.DataBindings.Clear()
    4. txtTEMobil.DataBindings.Clear()
    5. txtTETelefax.DataBindings.Clear()
    6. txtTEEmail.DataBindings.Clear()
    7. txtTETelefon.DataBindings.Add("Text", KundenBindingSource, "Telefon")
    8. txtTEMobil.DataBindings.Add("Text", KundenBindingSource, "Mobil")
    9. txtTETelefax.DataBindings.Add("Text", KundenBindingSource, "Telefax")
    10. txtTEEmail.DataBindings.Add("Text", KundenBindingSource, "Email")
    11. Else
    12. txtTETelefon.DataBindings.Clear()
    13. txtTEMobil.DataBindings.Clear()
    14. txtTETelefax.DataBindings.Clear()
    15. txtTEEmail.DataBindings.Clear()
    16. txtTETelefon.DataBindings.Add("Text", AnsprechpartnerBindingSource, "Telefon")
    17. txtTEMobil.DataBindings.Add("Text", AnsprechpartnerBindingSource, "Mobil")
    18. txtTETelefax.DataBindings.Add("Text", AnsprechpartnerBindingSource, "Telefax")
    19. txtTEEmail.DataBindings.Add("Text", AnsprechpartnerBindingSource, "Email")
    20. End If
    21. End Sub


    Das ich was falsch mache ist mir auch klar, deswegen bin ich ja hier, damit mir jemand nen Tipp geben kann. Aus meiner Sicht ergibt es schon Sinn, mir fehlt jedoch das nötige KnowHow.

    Wenn kein Ansprechpartner vorhanden ist, also cbTEAnsprechpartner.Text = "" dann soll es die Daten vom KundenBindingSource holen.
    Wenn ein Ansprechpartner vorhanden ist, dann sollen die Daten vom AnsprechpartnerBindingSource geholt werden.

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „mo48“ ()

    Dann versuch ich es noch einmal zu erklären.

    Ich hab eine Tabelle Kunden und eine Tabelle Ansprechpartner.

    Wenn ich einen Kunden mit einer datengebundenen Combobox auswähle, werden die Daten (Telefonnummer usw.) in die Textboxen geschrieben. Wenn der Kunde hinterlegte Ansprechpartner hat und ich einen davon auswähle, werden die Daten vom Ansprechpartner in die Textboxen geschrieben, da der Ansprechpartner eine andere Telefonnummer, E-Mail Adresse hat.

    Das funktioniert auch soweit mit dem oben geposteten code.
    Mein Problem ist jetzt aber, wenn ich einen Kunden auswähle, wird der erste Ansprechpartner (wenn vorhanden) automatisch ausgewählt. Ich dachte erst, ich könnte das villeicht mit selectedindex unterbinden, funktioniert aber nicht.
    Nächstes Problem, der Kunde hat mehrere Ansprechpartner. Ich wähle den Zweiten aus, merke ich hab den falschen ausgewählt und will dann den Ersten auswählen, dann heißt der erste Ansprechpartner wie der Zweite. Die Daten vom Ersten oder Zweiten werden auch alle richtig angezeigt und eingetragen, nur der Name des Ansprechpartners stimmt nicht mehr.

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „mo48“ ()