Benutzer mit den meisten Antworten
DataGridView - Neu eingefügte Zeile beim Erstellen formatieren

Frage
-
Guten Morgen,
ich habe noch teilweise Probleme das DataGridView betreffend.
Ich habe eine Funktion geschrieben, die mir oberhalb der aktivierten Zeile eine neue einfügen soll.
Das funktioniert soweit auch ganz gut, allerdings hat die vierte Spalte der Originalzeile eine Datumsformatierung und wenn ich dann in die vierte Spalte der erstellten Zeile klicke, bekomme ich eine Exception geworfen.
Daher meine Frage, ob es möglich ist direkt beim Erstellen der neuen Zeile die vierte Spalte zu formatieren.
Mein Ansatz war folgender:
private void tmiEinfügen_Click(object sender, EventArgs e) { try { ToolStripDropDownItem dropDownItem = (ToolStripDropDownItem)sender; ContextMenuStrip menuStrip = (ContextMenuStrip)dropDownItem.Owner; DataGridView dataGrid = (DataGridView)menuStrip.SourceControl; dataGrid.Rows.Insert(dataGrid.SelectedRows[0].Index); foreach (DataGridViewRow item in dataGrid.Rows) { if (item.Cells[3] == null) { item.Cells[3].Value = new DateTime(1900,01,01); //this.dataGrid.Columns["Faelligkeit"].DefaultCellStyle.Format = "d"; } } } catch { MessageBox.Show("Bitte wählen Sie zuerst eine Zeile aus.", "Achtung"); } }
Da das Programm an sich schon von einer anderen Person erstellt wurde, darf ich an der Originalformatierung nicht viele Änderungen durchführen.
Mit freundlichen Grüßen
Christy
- Bearbeitet Chrizzlybear Mittwoch, 26. März 2014 09:45
Antworten
-
Guten Morgen,
danke für deine Antwort aber ich habe den Fehler gestern Abend noch gefunden,
da ich in diesem Fall dummerweise einfach nur vergessen hatte etwas zu schreiben xD
if (item.Cells[3].Value == null) { item.Cells[3].Value = new DateTime(1900,01,01); }
So sieht es nun aus und funktioniert auch ohne Probleme.
Mit freundlichen Grüßen
Christy
- Als Antwort markiert Ciprian Bogdan Montag, 31. März 2014 13:24
Alle Antworten
-
Hi Christy,
jetzt mal so aus dem Stegreif.
Da du schon Werte in der Spalte hast, ist sie schon Formatiert (oder sollte es sein).
Den Wert solltest du dann im Passenden Format in die Spalte einfügen, können (wenn dein Ansatz klappt).
Gib doch bitte mal die Exception an die geworfen wird.
An dem Punkt. Fang nicht allgemein die Exception ab und schreib einfach einen Text hin. Sonder fange die Spezielle Exception ab und kümmre dich dann um den Fehler. Ansonsten gib wenigstens den Text der Exception in der Ausgabe mit an. Sonst weist du nicht was der wirkliche Fehler ist.
Grundlegend halte nicht die Daten in der UI, sonder erstelle dir dafür eine Klasse und binde sie an die UI. Die vorgegebene Formatierung kannst du dann natürlich behalten.
Mit freundlichen Grüßen
Björn -
Guten Morgen,
danke für deine Antwort aber ich habe den Fehler gestern Abend noch gefunden,
da ich in diesem Fall dummerweise einfach nur vergessen hatte etwas zu schreiben xD
if (item.Cells[3].Value == null) { item.Cells[3].Value = new DateTime(1900,01,01); }
So sieht es nun aus und funktioniert auch ohne Probleme.
Mit freundlichen Grüßen
Christy
- Als Antwort markiert Ciprian Bogdan Montag, 31. März 2014 13:24
-
Es freut uns, dass Du Dein Problem lösen konntest und danke, dass Du Deine Lösung hier im Forum gepostet hast. Jetzt können auch andere die das gleiche Problem haben unter Umständen davon profitieren.
Ciprian Bogdan, MICROSOFT
Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip„Entwickler helfen Entwickler“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.