Combobox mit DataSource einfach mit gleichem Text aus Gridview überschreiben möglich? Ist der Source dann noch "aktiv"?

  • VB.NET

Es gibt 15 Antworten in diesem Thema. Der letzte Beitrag () ist von BadLuck.

    Combobox mit DataSource einfach mit gleichem Text aus Gridview überschreiben möglich? Ist der Source dann noch "aktiv"?

    Guten Tag,

    ich stelle am besten erst einmal die Situation vor.
    Der User öffnet das Programm und sieht ein Dataview (Team, Liga, Nation), was mit Daten gefüllt ist (er kann auch keine Daten ändern!).

    Nun sucht er über die Suchmaske den richtigen Eintrag und macht einen Doppelklick auf diesen.

    ################# Ab hier ist es noch nicht implementiert, weil ich mir nicht sicher bin, ob ich das so machen kann###############

    Die Daten sollen nun an die darunter liegenden Komboboxen übergeben werden.
    Diese haben allerdings eine DataSource Bindung, siehe:
    [VB 2012] Klasseneigenschaft durch Textbox ändern?

    Nun kann ich doch nicht einfach den "Text" ändern, oder?
    Das wäre das erste Problem.

    Da nicht alle Komboboxen gefüllt werden, kann der User nun noch einzelne andere ComboBoxen ändern (auch DataSource gebunden) - die Boxen mit den aus dem DataGrid übergeben Daten können auch geändert werden!
    Wenn dem User nun alles gefällt kann er auf "Add" klicken, nun werden die Daten an ein ZWEITES Datagrid gesendet.

    Er kann sich somit eine eigene Liste erstellen, nachdem diese erstellt ist, sollte er einen Startbutton klicken, der diese Prozedur durchführt:

    Dim p1 As Integer = 1

    VB.NET-Quellcode

    1. Do
    2. Dim searchParameters = New PlayerSearchParameters() With {.Page = p1, .League = .League = DirectCast(cmbLeague.SelectedItem, Team).Value, .Team = .Team = DirectCast(cmbTeam.SelectedItem, Team).Value, .Nation = .Nation = DirectCast(cmbNation.SelectedItem, Team).Value, .Position = .Position = DirectCast(cmbPosition.SelectedItem, Team).Value}
    3. Dim searchResponse = Await client.SearchAsync(searchParameters)
    4. p1 += 1
    5. For Each auctionInfo As AuctionInfo In searchResponse.AuctionInfo
    6. 'hier wird eine Prozedur für jeden Treffer ausgeführt
    7. Next
    8. System.Threading.Thread.Sleep(300)
    9. Loop Until p1 = 11


    Soweit so gut, das Problem ist jetzt natürlich das er nur nach den Daten in den Comboboxen schaut und fertig.
    Ich möchte aber das diese Prozedur in einer schleife durchgeführt wird, das er jedesmal wenn "p1=11" ist, die nächsten Werte aus dem DataGrid liest.

    Ich hoffe das war einigermaßen verständlich.
    Ich will eigentlich das selbe machen, was der Code oben macht, allerdings sollen die Werte (.League, .Nation, .Team...) aus dem ZWEITEN Datagrid kommen, dieses soll er dann durchgehend mit einer schleife durchlaufen.

    Ich habe mir schon sowas überlegt wie die Werte aus dem zweiten Grid einfach bei jedem Suchlauf wieder in die Comboboxen zu schreiben, allerdings weiß ich halt nicht ob ich einfach nur einen String in die Combobox schreiben kann.

    Ai, ai viel geschrieben, falls noch Infos benötigt werden - gerne.
    Vielleicht mache ich es mir auch wiedermal viel zu schwer und es gibt einen viel einfacheren und saubereren Weg.

    Ich danke schonmal für jede Hilfe.

    Gruß

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

    Kannst du vielleicht Screenshot von der Oberfläche anhängen? Ich verstehe nicht ganz, was du willst und wie es ablaufen soll.
    Welche Comboboxen? Wozu sind sie da? An was sind sie gebunden? Und wozu das zweite Grind und an was ist es gebunden?
    Ich bin nicht so der Künstler, aber ich denke so kann ich es besser erklären (Screenshot ist schlecht wegen mehreren Tabpages):



    Das Gridview1 wird automatisch aus einer XML befüllt, nun kann der User suchen - bei Doppelklick auf einen Eintrag, werden die Daten an die Comboboxen übergeben, mit diesen kann der User nochmal Änderungen vornehmen.
    Nun sieht es momentan so aus, das die Funktion auf die Comboboxen zugreift (diese sind mit Klassen gebunden - siehe Link im ersten Post).

    Nun möchte ich aber das der User "Add" klickt, die Werte aus den Comboboxen in das GridView2 geschrieben werden und durch ein sagen wir "Start" klick, die Funktion auf die Daten aus dem Gridview 2 zugreift, allerdings in einer Schleife, so das sich die Daten der Funktion bei jedem Durchlauf ändern. (Zeile für Zeile und wieder von vorne)

    Momentan ist es wie gesagt so, das die Function einfach nur auf die Comboboxen zugreift.

    Ich hoffe es ist ein wenig mehr Licht im dunkeln.
    Wenn nicht, mache ich weiter mit dem was ihr braucht, ich weiß nämlich echt nicht wie ich das gelöst bekomme.
    Ich denke es ist wichtig den oben verlinkten Thread zu lesen, dort sieht man in den letzten Posts auch wie die Comboboxen gebunden sind.

    Gruß

    BadLuck schrieb:

    das die Funktion auf die Comboboxen zugreift

    BadLuck schrieb:

    die Funktion auf die Daten aus dem Gridview 2 zugreift

    Welche Funktion? Und seit wann greift sie bei dir wieder auf die Comboboxen zu, wenn wir dir im letzten Thread beigebracht haben, dass du das DataSet dazwischen hast und die Funktionen dann auf die Daten zugreifen, nicht auf die Comboboxen?

    Du hast einen aktuellen Datensatz, der im Grid1 ausgewählt wurde, diesen zeigst du detailliert in den Comboboxen (wie in einem der Vier Views von EDR, kann mir die Namen nie merken), DetailView? Dann willst du, dass der User mit Add einen neuen Datensatz generiert, indem er aus den Comboboxen Daten auswählt, das DataSet steht dann natürlich auf ReadOnly (bzw. die Spalten), sonst würde der User den aktuellen Datensatz wieder verändern. Was du also machen musst, ist einen neuen Datensatz generieren (mit .AddDataTableNameRow(), hatten wir schon) und den willst du im zweiten Grid anzeigen? So?
    Nein, nein wir reden aneinander vorbei :P

    Es geht mir nicht darum wie ich ein DataSet fülle oder eine Reihe im zweiten Grid anlege,
    es geht darum, das diese Prozedur:

    VB.NET-Quellcode

    1. Do
    2. Dim searchParameters = New PlayerSearchParameters() With {.Page = p1, .League = .League = DirectCast(cmbLeague.SelectedItem, Team).Value, .Team = .Team = DirectCast(cmbTeam.SelectedItem, Team).Value, .Nation = .Nation = DirectCast(cmbNation.SelectedItem, Team).Value, .Position = .Position = DirectCast(cmbPosition.SelectedItem, Team).Value}
    3. Dim searchResponse = Await client.SearchAsync(searchParameters)
    4. p1 += 1
    5. For Each auctionInfo As AuctionInfo In searchResponse.AuctionInfo
    6. 'hier wird eine Prozedur für jeden Treffer ausgeführt
    7. Next
    8. System.Threading.Thread.Sleep(300)
    9. Loop Until p1 = 11



    Wie man sehen kann (fett markiert Edit: fett markieren geht wohl innerhalb des Codes nicht cmbLeague,Team, Nation und Position sind gemeint), greift dieser Code auf die Daten in den Comboboxen zu (diese sind an Klassen gebunden [VB 2012] Klasseneigenschaft durch Textbox ändern?), einfach gesagt, will jetzt eigentlich das diese Prozedur auf die Werte im Gridview2 zugreift und dann mit einer Schleife Reihe für Reihe diese Prozedur mit anderen Werten ausführen.

    Sind wir jetzt näher dran 8o


    Gruß

    BadLuck schrieb:

    Der User öffnet das Programm und sieht ein Dataview
    Das kann schomal nicht sein.
    DataView ist eine Klasse, die kann man auf einem Form nicht sehen.
    Er sieht ein DatagridView, hoffentlich eines, was an ein typisiertes Dataset gebunden ist.

    Aber ich fürchte, es ist nicht an ein typisiertes Dataset gebunden - woran ist es dann gebunden?

    Das erst bei Doppelklick die Combos Daten anzeigen sollen ist ein sehr ungünstiges Design. Weil da können die Combos womöglich Daten aus Datensatz1 anzeigen, während im DGV aber bereits Datensatz3 angewählt ist - das wird zu Verwirrung führen.

    Also besser einen richtigen DetailView (mit Joining-Anteil) anstreben, wie prinzipiell in vier Views-Videos gezeigt (neben einigem anneren).
    Es ist doch an ein DataSet gebunden ?(
    Ich habe es genau wie in dem Link im letzten Post gemacht.

    Das mit dem Doppelklick muss nicht sein, kann auch einfach über einen Button oder dergleichen realisiert werden.
    Werde mir heute Abend dann auch endlich die Videoreihe komplett anschauen, dann werde ich da sicher noch einiges optimieren können.

    Aber @ErfinderDesRades
    Verstehst du denn einigermaßen was ich überhaupt möchte?
    Ich kann es einfach nicht ganz klar ausdrücken.

    Gruß
    Ich hätte gerne eine Rückmeldung, was an meiner Intepretation falsch sein soll:

    sonne75 schrieb:

    Du hast einen aktuellen Datensatz, der im Grid1 ausgewählt wurde, diesen zeigst du detailliert in den Comboboxen (wie in einem der Vier Views von EDR, kann mir die Namen nie merken), DetailView? Dann willst du, dass der User mit Add einen neuen Datensatz generiert, indem er aus den Comboboxen Daten auswählt, das DataSet steht dann natürlich auf ReadOnly (bzw. die Spalten), sonst würde der User den aktuellen Datensatz wieder verändern. Was du also machen musst, ist einen neuen Datensatz generieren (mit .AddDataTableNameRow(), hatten wir schon) und den willst du im zweiten Grid anzeigen? So?

    BadLuck schrieb:

    Es ist doch an ein DataSet gebunden
    Hmm. Beziehen tust du dich auf [VB 2012] Klasseneigenschaft durch Textbox ändern? - und das sieht mri garnet nach typisierte Dataset-Klassen aus.
    Aber vlt. irre ich mich, und in 2012 gibts sowas wie Team.GetAll() und Client.SearchAsync()

    sonne75 schrieb:

    Ich hätte gerne eine Rückmeldung, was an meiner Intepretation falsch sein soll:

    sonne75 schrieb:

    Du hast einen aktuellen Datensatz, der im Grid1 ausgewählt wurde, diesen zeigst du detailliert in den Comboboxen (wie in einem der Vier Views von EDR, kann mir die Namen nie merken), DetailView? Dann willst du, dass der User mit Add einen neuen Datensatz generiert, indem er aus den Comboboxen Daten auswählt, das DataSet steht dann natürlich auf ReadOnly (bzw. die Spalten), sonst würde der User den aktuellen Datensatz wieder verändern. Was du also machen musst, ist einen neuen Datensatz generieren (mit .AddDataTableNameRow(), hatten wir schon) und den willst du im zweiten Grid anzeigen? So?


    Interpretation ist richtig, allerdings hilft mir das leider nicht weiter, da sie dort aufhört wo mein Problem beginnt ;(

    @ErfinderDesRades
    Diesen Thread meinte ich:
    [VB 2012] Suchen in einem DataGridView

    Naja, anscheinend kann ich mich nicht richtig ausdrücken, dann muss ich wohl irgendwie anders einen Weg finden.

    Gruß
    Zum zigten und letzten Mal, du sollst überhaupt nicht auf DGV zugreifen, sondern auf die Bindingsource und Dataset. Schau dir die Filme an, dann weißt, was ich meine.

    Du kannst dir doch gleich eine zweite Tabelle anlegen (im Designer), die zuerst leer ist und bei Buttonklick wird eben eine neue DataTable2Row hinzugefügt. Dann hast du alle deine Daten, die du brauchst.

    Mit AddXXRow() füllst du keine DataGridView, sondern DataSet!!! Wenn du Grid2 an diese neue Tabelle bindest (von Anfang an), dann zeigt dir dein Grid2 die Datensätze, die du willst.