die Implementierung von virtuellen Modus im datagridview-das ist Datenbindung
Eine Allgemeine Frage für die Beratung bei der Umsetzung.
Ich habe eine Sammlung, gebunden datagridview
.
BindingList<Line> allLines = new BindingList<Line>();
dataGridView1.DataSource = allLines;
Möchte ich umsetzen virtual mode
weil die Sammlung enthalten könnte Millionen von Einträgen (Line
Objekte), so dass ich dachte, es kann schneller nur auf 'cache' oder display ein paar Einträge, die in einer Zeit notwendig. Das ist, was ich verstehe virtuellen Modus zu sein?
Habe ich mir angeschaut: http://msdn.microsoft.com/en-us/library/2b177d6d.aspx
Aber ich kann nicht ankommen es zu wirken für eine datagridview
ist databound
.
Kann ich nicht geben Sie die Zeilenanzahl:
this.dataGridView1.RowCount = 20;
`RowCount property cannot be set on a data-bound DataGridView control.`
EDIT: dieser link schlägt vor, die ich haben kann, zu entfernen, die Bindung komplett. Ist dies der Fall? http://msdn.microsoft.com/en-us/library/ms171622.aspx
'Wenn gebunden-Modus nicht erfüllt Ihre performance-Anforderungen, können Sie verwalten Sie alle Ihre Daten in einem benutzerdefinierten cache durch virtual-mode event-Handler.'
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie verwenden möchten DataGridView.VirtualMode, dann bist du nicht erwarten, gebunden Datensatz. Sie atr Gegensätze. Also, Sie setzen nicht
DataSource
, sondern nur dieRowCount
Eigenschaft und geben Sie einen event-handler für DataGridView.CellValueNeeded Veranstaltung.Außerdem müssen Sie
dataGridView.VirtualMode
Eigenschafttrue
erste, wahrscheinlich schreiben die designer. Standardmäßig ist es eingestelltfalse
, das ist, warum Sie eine Ausnahme, die sagt, Sie kann nicht eingestelltRowCount
.Wahrscheinlich müssen Sie manuell initialisieren grid-Spalten.
Während Sie erfrischende Ihrem Netz (z.B. auf button-Klick), Sie müssen
Den
CellValueNeeded
event ausgelöst wird für jede Spalte, jede Zeile, abhängig von der Zeilenanzahl und die Anzahl der Spalten. Man erwartet, dasse.Value
mit dem Wert der bearbeiteten Zelle in Ihrem event-handler je nache.RowIndex
unde.ColumnIndex
.So, für diese zu arbeiten, müssen Sie mindestens zu handhaben
CellValueNeeded
. Wenn Ihr DataGridView ist readonly, andere Veranstaltungen sind nicht erforderlich.Einer umfassenden und aufeinander folgenden übersicht ist verfügbar unter Den virtuellen Modus in Windows Forms DataGridView-Steuerelement.