Announcement

Collapse
No announcement yet.

DataGridView

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

  • DataGridView

    Hi,

    wie kann ich abhängig vom Feldinhalt eines zugrunde liegenden DataSets die Zeilen eines DataGridView einfärben? In diesem Falle gibt es in einer Tabelle ein Feld "UPos". Ist dieses NULL oder 0, muss die Zeile in hellgrau erscheinen, ansonsten in weiß.

    Weiß jemand Rat?

    Gruß

    Zimmi

  • #2
    Hallo,
    für diese Aufgabe gibt es mehrere Implementierungswege. Der einfachste Weg führt über das DataGridView-Ereignis <b>CellFormatting</b>. Angenommen, die Datenbanktabelle wird mit den folgenden Datensätzen gefüllt:

    <div style="font-family: Courier New; font-size: 10pt; color: black; background: white;"><p style="margin: 0px;"><span style="color: blue;">USE </span>tempdb</p><p style="margin: 0px;">GO</p><p style="margin: 0px;">&nbsp;</p><p style="margin: 0px;"><span style="color: blue;">CREATE TABLE </span>TestTbl</p><p style="margin: 0px;">(</p><p style="margin: 0px;">&nbsp; id&nbsp;&nbsp;&nbsp; <span style="color: blue;">INT </span>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <span style="color: blue;">NOT NULL IDENTITY PRIMARY KEY</span>,</p><p style="margin: 0px;">&nbsp; kunde&nbsp;&nbsp;&nbsp; <span style="color: blue;">NVARCHAR</span>(29) <span style="color: blue;">NOT NULL</span>,</p><p style="margin: 0px;">&nbsp; betrag <span style="color: blue;">MONEY </span>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; <span style="color: blue;">NOT NULL DEFAULT </span>0,</p><p style="margin: 0px;">&nbsp; rabatt <span style="color: blue;">INT </span>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <span style="color: blue;">NULL</span></p><p style="margin: 0px;">)</p><p style="margin: 0px;">GO</p><p style="margin: 0px;"><span style="color: blue;">INSERT INTO </span>dbo.TestTbl (kunde, betrag) <span style="color: blue;">VALUES </span>(<span style="color: maroon;">'Kosch'</span>, 100);</p><p style="margin: 0px;"><span style="color: blue;">INSERT INTO </span>dbo.TestTbl (kunde, betrag) <span style="color: blue;">VALUES </span>(<span style="color: maroon;">'Ritz'</span>, 550);</p><p style="margin: 0px;"><span style="color: blue;">INSERT INTO </span>dbo.TestTbl (kunde, betrag,rabatt) <span style="color: blue;">VALUES </span>(<span style="color: maroon;">'Ernst'</span>, 1500, 10);</p><p style="margin: 0px;"><span style="color: blue;">INSERT INTO </span>dbo.TestTbl (kunde, betrag,rabatt) <span style="color: blue;">VALUES </span>(<span style="color: maroon;">'Lindner'</span>, 555.55, 0);</p><p style="margin: 0px;">GO</p></div>

    In diesem Fall sorgt die folgende Implementierung dafür, dass die Zeilen im DataGridView einen hellgrauen Hintergrund erhalten, die entwender keinen Wert in der Rabatt-Spalte haben (NULL) oder den Wert 0:

    <div style="font-family: Courier New; font-size: 10pt; color: black; background: white;"><p style="margin: 0px;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; <span style="color: blue;">private</span> <span style="color: blue;">void</span> testTblDataGridView_CellFormatting(<span style="color: blue;">object</span> sender, <span style="color: teal;">DataGridViewCellFormattingEventArgs</span> e)</p><p style="margin: 0px;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; {</p><p style="margin: 0px;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <span style="color: teal;">DataGridViewRow</span> aRow = testTblDataGridView.Rows[e.RowIndex];</p><p style="margin: 0px;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <span style="color: blue;">if</span> ((aRow.Cells[3].Value == System.<span style="color: teal;">DBNull</span>.Value) || (aRow.Cells[3].Value == <span style="color: blue;">null</span>))</p><p style="margin: 0px;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; {</p><p style="margin: 0px;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; e.CellStyle.BackColor = <span style="color: teal;">Color</span>.LightGray;</p><p style="margin: 0px;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }</p><p style="margin: 0px;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <span style="color: blue;">else</span></p><p style="margin: 0px;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; {</p><p style="margin: 0px;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <span style="color: blue;">if</span> ((<span style="color: blue;">int</span>)aRow.Cells[3].Value &gt; 0)</p><p style="margin: 0px;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; e.CellStyle.BackColor = <span style="color: teal;">Color</span>.White;</p><p style="margin: 0px;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <span style="color: blue;">else</span></p><p style="margin: 0px;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; e.CellStyle.BackColor = <span style="color: teal;">Color</span>.LightGray;</p><p style="margin: 0px;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }</p><p style="margin: 0px;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }</p></div&gt

    Comment


    • #3
      Hat perfekt funktioniert! Vielen Dank!

      Gruß

      Zimm

      Comment

      Working...
      X