Hinzufügen von Zeilen im datagridview mit bestehenden Spalten
Ich habe eine DataGridView
mit mehreren Spalten erstellt. Ich habe fügen Sie einige Zeilen, und Sie erhalten korrekt angezeigt; jedoch, wenn ich auf eine Zelle klicken, wird der Inhalt verschwindet.
Was mache ich falsch?
Der code ist wie folgt:
foreach (SaleItem item in this.Invoice.SaleItems)
{
DataGridViewRow row = new DataGridViewRow();
gridViewParts.Rows.Add(row);
DataGridViewCell cellQuantity = new DataGridViewTextBoxCell();
cellQuantity.Value = item.Quantity;
row.Cells["colQuantity"] = cellQuantity;
DataGridViewCell cellDescription = new DataGridViewTextBoxCell();
cellDescription.Value = item.Part.Description;
row.Cells["colDescription"] = cellDescription;
DataGridViewCell cellCost = new DataGridViewTextBoxCell();
cellCost.Value = item.Price;
row.Cells["colUnitCost1"] = cellCost;
DataGridViewCell cellTotal = new DataGridViewTextBoxCell();
cellTotal.Value = item.Quantity * item.Price;
row.Cells["colTotal"] = cellTotal;
DataGridViewCell cellPartNumber = new DataGridViewTextBoxCell();
cellPartNumber.Value = item.Part.Number;
row.Cells["colPartNumber"] = cellPartNumber;
}
Dank!
- Ich hat ein post hier habe ich gelöscht, es war in Bezug auf asp.net da ich nicht jedes winforms-Programmierung und verwechselte dies als asp.net. tut mir Leid, dass Sie es Lesen und in die Irre, Sie ein bisschen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nur zu verlängern, diese Frage, es gibt auch eine weitere Möglichkeit, fügen Sie eine Zeile hinzu, um eine
DataGridView
, vor allem, wenn die Spalten sind immer die gleichen:Oder, wenn Sie wollen ParamArrays:
Die Werte in die Puffer müssen in der gleichen Reihenfolge wie die Spalten (einschließlich der versteckten) offensichtlich.
Dies ist die Schnellste Möglichkeit, die ich gefunden, um Daten in eine
DataGridView
ohne Bindung das Gitter mit einemDataSource
. Verbindlich wird das raster eigentlich beschleunigen, indem Sie eine erhebliche Menge an Zeit, und wenn Sie mehr als 500 Zeilen in einem raster, empfehle ich Ihnen, binden Sie es anstelle der Füllung mit der hand.Bindung besitzt kommen auch mit dem bonus, dass Sie halten das Objekt im Takt, f.e. wenn Sie aktiv werden wollen, auf die ausgewählte Zeile, die Sie tun können, das ist das DatagridView gebunden ist:
Ist es ratsam, dass Sie Ihre Klassen, die gebunden implementieren die
System.ComponentModel.INotifyPropertyChanged
- Schnittstelle, die es ermöglicht zu sagen, das grid über änderungen.Edit: oops! einen Fehler gemacht in der zweiten Zeile des Codes. - behoben.
Manchmal, ich hasse definieren Sie die datasource-Eigenschaft.
Ich denke, dass, Wann immer Sie erstellen, und legen Sie eine neue Zeile für "Zeile", die für einige seltsame Grund,den alten Wert erhalten, entsorgt. versuchen Sie nicht mit einer Instanz zu halten, die Zeilen, die Sie erstellen :
Scheint es, wie Zellen funktionieren mit dem cell-Instanzen. Ich habe keine Ahnung, warum es anders ist für die Zeilen aber. Weitere Prüfungen erforderlich sein können...