Datagridview Zeilen bearbeiten

  • VB.NET

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

    Fritz94 schrieb:

    Später wenn ich alles gemacht und getestet habe, setze ich mich richtig dran mit Namen etc etc. !


    Benenne die Dinger, wenn du sie erstellst. Das erleichtert nicht nur die Entwicklung (du musst dir nicht emrken / nicht nachsehen welches Element es denn nu wirklich ist) sonder erspart dir auch diese Art von refactoring, im Endeffekt bei einem richtigen programm arbeit von mehreren Stunden.

    Sprich deinen Ansatz kann ich ganz und garnicht empfehlen. Ich habe 6 Stunden gebraucht, um die Kommentare nachträglich hinzuzufügen, und ich habe nicht viel Code, auch nicht mehr als 2K Zeilen... daher mache es besser direkt.
    hey, ich stehe vor einem neuen Prob ....

    Undzwar möchte ich eine suchfunktion einbauen :

    Ich habe das hier versucht :

    VB.NET-Quellcode

    1. Dim eingabe As String
    2. Dim i, g As Integer
    3. eingabe = tolTxtSuche.Text
    4. Try
    5. 'Durchläuft die Reihen bis zum Ende
    6. For i = 0 To dgv.Rows.Count - 1
    7. 'Durchläuft die Spalten bis zum Ende
    8. For g = 0 To dgv.Columns.Count - 1
    9. 'Ist Zelle gleich der Eingabe, dann Farbe Türkis
    10. If dgv.Rows(i).Cells(g).Value = eingabe Then
    11. dgv.Rows(i).Cells(g).Style.BackColor = Color.Turquoise
    12. Else
    13. 'Suche entspricht nicht der eingabe, dann Zellen wieder weiss
    14. dgv.Rows(i).Cells(g).Style.BackColor = Color.White
    15. End If
    16. Next g
    17. Next i
    18. Catch ex As System.NullReferenceException
    19. MessageBox.Show(ex.Message")
    20. End Try


    Es geht auch, aber wie kann man da jetzt ncoh einbauen, dass es nicht der exakte Text sein muss ?

    Also ich habe z.B. in der Tabelle stehen : 123456789
    Wenn ich dann suche und 1234567 eingebe, soll die Zeile mit 123456789 aber auch makiert werden, weil sie 1234567 enthält ...
    versteht ihr ? :D
    Imo:
    1) statt RegEx täte erstmal der Like-Operator reichen
    2) Linq ist kein Deut schneller als ForEach, weil intern verwendet es auch nix anneres. Ich finde Linq zwar schick, aber ziemlich überbewertet.

    vor allem aber würde ich sehr dringend empfehlen, in den Daten zu suchen, nicht im DGV.
    Also wenns irgend geht, lieber die BindingSource durchsuchen.
    Aber du willst ja alle Spalten durchsuchen, das wäre über die BindingSource umständlich - nur wie kommts, dass du so komische Datensätze hast, wo scheinbar nur Zahlen drinstehen?
    Ich habe nichtnur Zahlen ...
    Aber irgendwie, geht es nichtmehr O_O
    Bei den ersten Versuchenging alles!
    Aber irgendwann, kam einfach immer wieder der Fehler

    bei dem Suchbegriff 10 :
    System.InvalidCastException wurde nicht behandelt.
    Message=Der Operator = ist für Typ DBNull und Zeichenfolge 10 nicht definiert.

    bei Hallo :
    System.InvalidCastException wurde nicht behandelt.
    Message=Der Operator = ist für Typ DBNull und Zeichenfolge Hallo nicht definiert.


    Was ist da den Los ? D:
    sagt er dir doch.

    vlt. wäre für dich interessant, die Fehlerzeile zu erfahren. Dazu einfach den TryCatch wegmachen.
    Typisches Beispiel von TryCatch ist ein heißes Eisen

    und machma Option Strict On!, denn eines deiner Probleme ist, du vergleichst Äpfel mit Bohnen.

    nochn Tipp: Tuma VB-Tag richtig benutzen und korrigiere das Layout deines Codes.

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