DataGridView doppelte Bezeichnungen nicht zulassen

  • VB.NET
  • .NET (FX) 4.5–4.8

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

    DataGridView doppelte Bezeichnungen nicht zulassen

    Hallo, ich habe folgendes Problem.
    Ich möchte das man in die DataGridView nicht zwei gleiche Werte eintragen kann. Der Text wird per TextBox hinzugefügt.
    Wie verhindere ich dies am schlausten?
    Gruß
    Bilder
    • Untitlssssed.png

      12,43 kB, 581×392, 82 mal angesehen
    Läuft das hier mit oder ohne DataBinding?
    Mit: vor dem Hinzufügen die DGV-Datenquelle durchsuchen
    Ohne: vor dem Hinzufügen den DGV-Inhalt durchsuchen
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.

    ErfinderDesRades schrieb:

    Wie sieht der Code aus, mit dem du überhaupt Werte ins dgv einträgst? Diesen Code wirste wohl modifizieren müssen.

    VB.NET-Quellcode

    1. Private Sub AddDirectory(ByVal Name As String)
    2. DBCommand.CommandText = _
    3. "INSERT " & _
    4. "INTO Key_Directories ( " & _
    5. " Name " & _
    6. ") VALUES ( " & _
    7. " " & clsDatabase.AddParameterInput(DBCommand, "@Name", Name, SqlDbType.VarChar, 30) & ")"
    8. Try
    9. DBCommand.ExecuteNonQuery()
    10. Catch ex As Exception
    11. MessageBox.Show("Fehler!" & vbCrLf & ex.Message, "Fehler", MessageBoxButtons.OK, MessageBoxIcon.Error)
    12. End Try
    13. End Sub
    Mach doch vor dem Insert nen Select Statement und prüf ob es das Ding schon gibt.
    Oder sag der Datenbank dass es Unique ist. Dann verhindert die das schon.
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    ... Nun solltest es selber wissen. :'D

    ErfinderDesRades schrieb:

    der gezeigte Code trägt überhaupt nichts in ein DGV ein - was soll das?? <X

    Tut mir leid, hatte vergessen das hier zu erwähnen:

    VB.NET-Quellcode

    1. Private Sub btnAdd_Click(sender As Object, e As EventArgs) Handles btnAdd.Click
    2. 'Ändert von der Tabelle Key_Directories den Name ab und fügt diesen in die txtDirectoryDesignation ein.
    3. AddDirectory(txtDirectoryDesignation.Text)
    4. dgvDirectoryDesignation.DataSource = dgvDirectoryDesignationList()
    Und was ist nun wieder dgvDirectoryDesignationList?
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Zumindest konzeptionell machst du's verkehrt herum: Erst änderst du was in der Datenbank, dann in der Datasource des DGVs.

    Richtig wäre grad andersrum: Erst inne Dgv-Source ändern, und dann inne DB.
    Dann kannst du die Dgv-Source vorher checken, und wenn sich eine Dublette ergäbe, wird der Gesamt-Vorgang gecancelt.



    Übrigens dein Db-Zugriff ist höchst umständlich und fehleranfällig - willst du für jeden Pups, den du in die Db schreibst, so einen Aufriss machen?
    Lass doch DataAdapter für dich arbeiten.

    Oder entwickel ganz ohne Datenbank - in vielen Fällen - und hier siehts auch so aus - ist eine Datenbank nur ein überflüssiger und pflege-Aufwändiger Kropf.
    Bis zu mw. 20000 Datensätze kann man viel einfacher in einer simplen xml-Datei speichern.