Announcement

Collapse
No announcement yet.

DataGridViewTextBoxColumn

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • DataGridViewTextBoxColumn

    Hallo zusammen !

    Ich beschäftige mich seit kurzem mit C# und habe jetzt auf eine kleines Problem, bei dem ich nicht so recht weiterkomme...
    vielleicht kann mir jemand einen Tipp geben...

    Ich habe eine Programm geschrieben, das bei Erkennen eines bestimmten Zustandes einen Warntext automatisch auf verschiedenen lokalen Druckern ausdrucken soll. Damit das konfigurierbar bleibt (da ich die lokalen Drucker ja vorher nicht kenne), habe ich eine Tabelle auf einem SQL-Server hinterlegt, nach dem Schema "Dokument-Name","Drucker-Name". Diese Tabelle lasse ich in einem DataGridView anzeigen und bei Bedarf auch dort ändern. Bis dahin klappt alles wie vorgesehen.

    Ich wollte nun die Spalte des DataGridView (jetzt noch DataGridViewTextBoxColumn) die den Druckernamen beinhaltet in eine DataGridViewComboBoxColumn umwandeln und die Auswahl(Items) mit den lokalen Druckern vorausfüllen, damit der Benutzer diese bei der Konfiguration auswählen kann.
    Leider erhalte ich aber dann beim Aufruf des DataGridView für jede Zeile, bei der der Zellinhalt nicht mit einer Auswahl der ComboBox übereinstimmt eine Warnmeldung mit dem Hinweis, das Ereignis "DataError" zu benutzen, der Inhalt der Zelle wird aber angezeigt. Wenn ich das Ereignis "DataError" mit einem leeren Methodenrumpf anlege, verschwindet die Meldung aber der Inhalt der Zelle wird nicht angezeigt(unangenehm).

    Wie kann kann ich erreichen, das der Zellinhalt angezeigt wird, auch wenn der Zellinhalt keinem Item der ComboBox entspricht und ohne unerwünschte Warnmeldung?

    Und wie erreiche ich zur Laufzeit die Items Auflistung dieser Spalte ?

    Viele Grüsse und vielen Dank !
    Peter

  • #2
    Hallo,

    wenn Visual Studio 2005 verwendet wird, kann die Datenbindung visuell konfiguriert werden. Ich habe ein Beispiel angehängt.
    Attached Files

    Comment


    • #3
      Hallo !

      Vielen Dank für das Beispiel. Man kann an diesem doch recht einfachen Beispiel sehr gut viele verschiedene Aspekte nachvollziehen.

      Dazu noch eine Frage. Dieses Beispiel habe ich zum Testen leicht geändert.

      In dieser Zeile "aRow.sprachen_id = 2; " wurde die 2 durch eine 9 ersetzt und damit ein ungültiger Wert in die Zeile geschrieben. Damit das überhaupt klappt, musste ich natürlich die Relation zwischen den Tabellen löschen (klar,die db wäre damit defekt). Beim Start bekomme ich jetzt wie erwartet eine System.Argument.Exception des DataGridView, da die 9 mit keinem Eintrag in der ComboBox mehr übereinstimmt (sind ja nur 7). Durch Benutzung des Event DataError wird diese Meldung unterdrückt, aber im GridView wird in der entsprechenden Zelle NICHTS angezeigt, also auch der fehlerhafte Wert nicht(auch DisplayMember=sprachen_id gesetzt). Kann man die Anzeige dieses Wertes in dieser ComboBox erzwingen, oder muss man dafür z.B. ein extra Labelcontrol benutzen ?

      Viele Grüsse
      Peter

      Comment

      Working...
      X