DataGridView, RowFilter als Konfigurator

  • VB.NET
  • .NET 4.0

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

    DataGridView, RowFilter als Konfigurator

    Guten Morgen,

    ich möchte einen kleinen Konfigurator programmieren, dieser soll Daten aus Formular A (Eingabe) in Formular B(Ausgabe) anzeigen.
    Dies klappt bisher aus eienr Combobox und einer Textbox.
    Nun zur Frage die Daten aus der Textbox zeigt er nur punktgenau an, er soll aber alles <= anzeigen. Wie setze ich das um?
    Desweiteren erkennt er eine Spalte nicht, die Spalte besteht aus 2 Wörter ohne unterstrich, ruft er diese auf gibt es einen Fehler. Wie muss die Worttrennung in Vb.net aussehen damit es funktioniert?

    VB.NET-Quellcode

    1. Dim dataview As New DataView(xxx)
    2. Dim FilterBauart As String
    3. FilterBauart = Configurator.cboBauart.Text
    4. dataview.RowFilter = String.Format("Bauart like '%" & FilterBauart & "%'")
    5. dataview.RowFilter = String.Format("Gewicht like '%" & Configurator.txtlast.Text & "%'")
    6. DataGridView1.DataSource = dataview


    Danke im vorraus. :thumbsup:
    Vielen Dank fürs fast garnicht beantworten der Frage.
    das mit Variable und Textbox habich schon gewusst. Aber ich frug ja, was darinnen steht.
    Immerhin, hab ich erfahren: 2,5 oder ähnlich.
    Also reime ich mir als Antwort zusammen, dass in beidem - Textbox und Variable - String-Entsprechungen von Fliesskommazahlen stehen, in deutscher Schreibweise.
    Aber ich frug ja noch mehr:

    ErfinderDesRades schrieb:

    dazu muss man die Datentypen der Spalten 'Bauart' und 'Gewicht' kennen, ...
    kannst du da vlt. auch noch was zu andeuten?
    Entschuldigung, ich habe die Antwort zwischen Tür und Angel verfasst.

    Also:
    Variable A ist eine Textbox mit einer Double Variable
    Variable B ist eine Dropdown Box mit 2 unterschiedlichen String werten in diesem Fall S oder R

    Das sortieren in der Listbox klappt soweit bei Variable A, jetzt soll zusätzlich aber Variable B auf der Datenbank berücksichtigt werden(andere Spalte) und nur Werte mit dem Fall S oder nach geänderter Auswahl R stehen.

    das ganze sieht zur Zeit so aus:


    VB.NET-Quellcode

    1. Me.DataTableAdapter.Fill(Me.Data_Rev00DataSet.Tabelle)
    2. Dim dataview As New DataView(Hubgetriebe_Rev00DataSet.Tabelle)
    3. Dim FilterBauart As String
    4. FilterBauart = Configurator.cboBauart.SelectedItem
    5. For x = 0 To lboVorauswahl.Items.Count - 1
    6. dataview.RowFilter = String.Format("Bauart like '%" & FilterBauart & "%'")
    7. x += 1
    8. Next
    9. dataview.RowFilter = String.Format("[kraft statisch] like '%" & Configurator.txtlast.Text & "%'")
    10. lboVorauswahl.DataSource = dataview

    Datentypen der Spalten "Bauart" ist String und "Gewicht" ist Double
    Ich hoffe ich konnte die Frage jetzt genauer verfassen @ErfinderDesRades
    Lass uns bitte (um himmels willen!) bei diesem Code bleiben:

    VB.NET-Quellcode

    1. Dim dataview As New DataView(xxx)
    2. Dim FilterBauart As String
    3. FilterBauart = Configurator.cboBauart.Text
    4. dataview.RowFilter = String.Format("Bauart like '%" & FilterBauart & "%'")
    5. dataview.RowFilter = String.Format("Gewicht like '%" & Configurator.txtlast.Text & "%'")
    6. DataGridView1.DataSource = dataview
    Dazu sagst du:

    Dome2107 schrieb:

    Datentypen der Spalten "Bauart" ist String und "Gewicht" ist Double
    Also wenn Gewicht vom Typ Double ist, kann der Filter natürlich keine Like - Bedingung enthalten (und natürlich müssen auch die Quotes und Wildcards weg - das ist ja nur auf Strings anwendbar nicht auf Double).

    hmm - auch sonst ist der Filter nicht sinnvoll.
    Erst setzt du ihn auf String.Format("Bauart like '%" & FilterBauart & "%'")
    und gleich danach auf String.Format("Gewicht like '%" & Configurator.txtlast.Text & "%'")
    Ist ja klar, dass die erste Zeile nichts sichtbares bewirken kann - wird ja gleich danach mit einem anderen Wert überschrieben.

    Was zumindest bischen Sinn ergeben könnte:

    VB.NET-Quellcode

    1. Dim dataview As New DataView(xxx)
    2. dataview.RowFilter = "Gewicht <= " & Configurator.txtlast.Text
    3. DataGridView1.DataSource = dataview

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

    Neu

    Danke!
    Wie kann ich nach mehreren Spalten Filter? Erst soll Spalte A betrachtet anschließend Spalte C und ggf. noch Spalte E.
    In der Listbox soll weiterhin aber nur Inhalt der Spalte B angezeigt werden

    Spalte ASpalte BSpalte CSpalte DSpalte E
    Gewicht ABezeichnungBauart AWert XWert Y
    Gewicht BBezeichnungBauart BWert X1Wert Y1

    Anzeige klappt soweit, es ist nur die Sortierung etwas verwirrend.