DataSource kann nicht gebunden werden

  • VB.NET
  • .NET 4.5

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von VaporiZed.

    DataSource kann nicht gebunden werden

    Hi

    hier habe ich mal einen Code den ich nachvollziehen wollte,

    ganz verstehe ich das nicht. Siehe bild

    code ausschnitt

    VB.NET-Quellcode

    1. Private Sub FormMain_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    2. mg = True
    3. Ds2.ReadXml(file, XmlReadMode.InferSchema)
    4. cm = CType(BindingContext(Ds2, "Adressen"), CurrencyManager)
    5. dv = CType(cm.List, DataView)
    6. m_Datagrid.DataSource = Ds2
    7. m_Datagrid.DataMember = "Adressen"
    8. 'TextBox6.DataBindings.Add(New Binding("Text", Ds2, "Adressen.Bild"))
    9. TextBox5.DataBindings.Add(New Binding("Text", Ds2, "Adressen.TelNr"))
    10. TextBox4.DataBindings.Add(New Binding("Text", Ds2, "Adressen.Ort"))
    11. TextBox3.DataBindings.Add(New Binding("Text", Ds2, "Adressen.Vorname"))
    12. TextBox2.DataBindings.Add(New Binding("Text", Ds2, "Adressen.Name"))
    13. TextBox7.DataBindings.Add(New Binding("Text", Ds2, "Adressen.Test"))
    14. Navigation()
    15. End Sub

    Wollte zum test die Textbox7 binden kommt aber die fehlermeldun die man im screenshot sieht

    Blicke da nicht durch. Kann mir da jemand auf die sprünge helfen
    Bilder
    • data.png

      32,77 kB, 1.017×466, 31 mal angesehen
    Das ist es ja

    wie gesagt der code ist nicht von mir.
    da gibt es kein datatable.

    wie es aussieht ist es ein nicht typisiertes dataset.

    VB.NET-Quellcode

    1. Public Class FormMain
    2. Dim file As String = "Telefonliste.xml"
    3. Dim cm As CurrencyManager
    4. Dim dv As DataView
    5. Dim mg As Boolean
    6. Private Sub FormMain_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    7. mg = True
    8. Ds2.ReadXml(file, XmlReadMode.InferSchema)
    9. cm = CType(BindingContext(Ds2, "Adressen"), CurrencyManager)
    10. dv = CType(cm.List, DataView)
    11. m_Datagrid.DataSource = Ds2
    12. m_Datagrid.DataMember = "Adressen"
    13. 'TextBox6.DataBindings.Add(New Binding("Text", Ds2, "Adressen.Bild"))
    14. TextBox5.DataBindings.Add(New Binding("Text", Ds2, "Adressen.TelNr"))
    15. TextBox4.DataBindings.Add(New Binding("Text", Ds2, "Adressen.Ort"))
    16. TextBox3.DataBindings.Add(New Binding("Text", Ds2, "Adressen.Vorname"))
    17. TextBox2.DataBindings.Add(New Binding("Text", Ds2, "Adressen.Name"))
    18. TextBox7.DataBindings.Add(New Binding("Text", Ds2, "Adressen.Test"))
    19. Navigation()
    20. End Sub
    21. Private Sub Navigation()
    22. Me.lblNavLocation.Text = Me.BindingContext(dv).Count.ToString & " Datensätze"
    23. End Sub
    24. Private Sub Button1_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    25. m_Datagrid.Focus()
    26. m_Datagrid.Refresh()
    27. m_Datagrid.SetDataBinding(Ds2, "Adressen")
    28. Ds2.WriteXml(file)
    29. mg = True
    30. Navigation()
    31. End Sub


    Wie kann man da neue Spalten hinzufügen?
    @manni4545null

    Ich geh davon aus das dein Ds2 ein DataSet ist, in dem eine DataTable "Adressen" ist.
    Am besten kann man es herausfinden, wenn wir einen kleinen Einblick in deine "Telefonliste.xml" hätten. Dort sieht man sofort, welche Spalten alles zur Verfügung stehen.

    Hast du's schon mal versucht ohne diese Zeile 21? Werden die anderen Spalten in der DGV angezeigt? Wie siehts mit den Textbox'es aus, besitzen die auch einen Inhalt?

    Was ich nicht ganz verstehe:
    Wofür die Zeilen 10 + 11 sind. Irgendwie werden die Variablen nicht weiter verwendet.

    Freundliche Grüsse

    exc-jdbi


    EDIT: Schau dir vielleicht kurz den Anhang an. Form1 ist zu bevorzuge.
    Dateien
    • DGVAdressen.zip

      (26,6 kB, 16 mal heruntergeladen, zuletzt: )

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „exc-jdbi“ ()

    Das "Test" kann ich nicht zuordnen, da es in der XML-Datei nicht vorhanden ist.

    Ist es möglich, das "Test" dazu da ist, um eventuelle Filterungen zu testen, in dem irgend z.B. ein Wort eingegeben wird?


    ??? Ich weiss nicht was das Test sein soll
    Wenn es drin sein soll, dann muss es in der XML-Datei erwähnt werden im Container von Adressen. Jeweils z.B. nach der TelNr.

    VB.NET-Quellcode

    1. <Test></Test>



    oder man kann es auch binden mit der Adresse des Bildes

    VB.NET-Quellcode

    1. ​TextBox7.DataBindings.Add(New Binding("Text", Ds2, "Adressen.Bild"))



    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „exc-jdbi“ ()

    Du musst, wie @exc-jdbi schon sagte, dem Compiler auch klar machen, dass die DataTable jene Test-Spalte enthält. Ansonsten ist doch klar, dass er rebelliert. Wenn Du schon untypisiert arbeitest, dann musst Du eben vor dem Binding sowas machen:

    VB.NET-Quellcode

    1. ds2.Tables(0).Columns.Add("Test", GetType(String)) 'oder welchen Typ Du auch immer verwendest; Typangabe ist zwar optional, aber besser ist es

    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Häufig von mir verwendete Abkürzungen: CEs = control elements (Labels, Buttons, DGVs, ...) und tDS (typisiertes DataSet)
    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht in den Spekulatiusmodus gehen.