Announcement

Collapse
No announcement yet.

Bestandsmeldung im DataGridView!

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

  • Bestandsmeldung im DataGridView!

    Hallo Leute,

    im Rahmen meiner Abschlussprüfung zum Fachinformatiker Fachrichtung Anwendungsentwicklung, programmiere ich ein Programm (Projekt).
    Das Programm verbindet sich zu einem MySQL-Server und öffnet eine Tabelle in der Produkte eingetragen werden und zurück in die Datenbank geschrieben werden. Das klappt auch alles wunderbar, mein programm ist quasi fertig, nur eine funktion würde ich gern noch haben . Nun meine Frage:

    Wie kann ich es realisieren, das der bestand, wenn er unter oder auf 5 ist, das Feld oder die Zahl rot einfärben (Im DataGridView). Quasi wenn man sich verbindet, das alle Bestandswerte die den Meldebestand von 5 erreichen sich rot färben?

    Auf Hilfe oder denkanstöße wäre ich sehr dankbar

    gruß

    J.D.

    P.S.
    Als Anhang einmal ein Main-Screen des Programms
    Attached Files

  • #2
    Hallo,

    dazu kannst Du vermutlich das CellValueChanged-Ereignis benutzen. Ich glaube, das wird (über die Beschreibung in der SDK-Doku hinaus) auch ausgelöst, wenn Daten durch DbDataAdapter.Fill erstmalig eingetragen werden.

    Über DataGridViewCellEventArgs kommst Du an Zeile und Spalte und kannst so den Wert prüfen.

    Viel Erfolg! Jürgen

    Comment


    • #3
      Hmm ich bekomms net hin kannst du mir code-mäßig auf die sprünge helfen? Ist das, in verbindung mit einer SQL-Tabelle, so möglich wie ohne?

      edit:
      Hätte jetzt mal sowas als Anfang:

      Code:
      foreach (DataRow dr in data.Rows)
      {
              if (dr["Bestand"] = "5") <----- Fehlermeldung "Typ kann nicht als Bool konvertiert werden"
                    {
      	                    		
                     }
      }
      Doch irgendwie komm ich damit nicht so richtig weiter...
      Zuletzt editiert von J.D.; 19.06.2008, 12:22.

      Comment


      • #4
        Was, bitte schön, hast Du in der einen Stunde zwischen der letzten Hilfe und der Nachfrage selbst probiert? Bitte etwas mehr Eigeninitiative!

        Ach, inzwischen kam diese Eigeninitiative; aber das ist doch etwas wenig. Zu if gehört "==", nicht "=". Werte einer DataRow müssen immer in einen Typ konvertiert werden, z.B.:
        Code:
        if ((int)dr["Bestand"] == 5)
        Aber ich will mal nicht so sein, vor allem da der Zusammenhang zwischen DataGridView und einer bestimmten DataTable-Zeile nicht so offensichtlich ist. Das Ereignis wird, wie ich schon schrieb, ständig aufgerufen. Es ist also nicht sinnvoll, dann immer alle Zeilen zu verarbeiten.
        Code:
        private void DataGridView1_CellValueChanged(
            object sender, DataGridViewCellEventArgs e)
        {
            //  nur die betreffende Spalte prüfen
            if (e.ColumnIndex == 3) {
                //  hole die Zeile im DataGridView
                DataRowView rv = myDataGridView.Rows[e.RowIndex].DataBoundItem as DataRowView;
                if (rv != null) {
                    //  hole die eigentliche Zeile der DataTable
                    DataRow row = rv.Row;
                    //  jetzt kann wie üblich auf row zugegriffen werden
                    DataGridViewCell cell = myDataGridView.Rows[e.RowIndex].Cells[e.ColumnIndex];
                    if ((int)row["Bestand"] == 5)  
                        cell.Style.BackColor = Color.Red;
                    else
                        cell.Style.BackColor = Color.White;
                }
            }
        }
        Aber das ist nur schnell getippt, ohne Gewähr. Bei Fehlermeldungen solltest Du zunächst selbst in der Hilfe suchen.

        Jürgen

        Comment


        • #5
          Code:
          if ((int)dr["Bestand"] == 5)
          naja ich bin in dem Bezug nicht drauf gekommen. Ich danke dir für deinen code, ich werde ihn probieren bwz. mir den rest in der Doku suchen.

          Entschuldige die unannehmlichkeiten.

          Gruß
          Zuletzt editiert von J.D.; 19.06.2008, 13:49.

          Comment

          Working...
          X