2017-10-26 4 views
-1

ich eine Datagridview, die bevölkert wird, wenn das Formular geladen wird wie folgt aus:C# verhindern Datagridview von Laden

BindingSource bindingSource = new BindingSource(); 

bindingSource.DataSource = //some list returned from database; 

dgv.DataSource = bindingSource; 

Wenn es einen Fall gibt, wo es Millionen von Datensätzen, die das Gitter langsam laden verursachen würde, dann Ich hätte gerne irgendwo auf dem Formular eine Schaltfläche, auf die der Benutzer klicken könnte, um zu verhindern, dass das Raster ausgefüllt wird. Ich weiß nicht, ob das vernünftig ist.

Ich bin offen für jedes Feedback - einschließlich der Tatsache, dass das Design schlecht ist.

EDIT: bitte erläutern Sie die -1. Ich stellte eine Frage, dass ich die Antwort nicht sah und Code einschloss. Ich versuche hier das richtige Protokoll herauszufinden.

+0

Sie bitten einen Computer, zwei verschiedene Aufgaben gleichzeitig auszuführen. Normalerweise werden beim Laden nur die Codezeilen durchsucht, die die Informationen laden. Es wird nicht durch andere Schaltflächenmethoden ausgeführt, da der Code diesen Punkt nicht erreicht. Also bezweifle ich selbst, ob das überschaubar und effizient ist. Aber wenn es möglich ist, dann sollte es das schaffen, wenn die Datenbank gleichzeitig erreicht wird. – Steven

+0

Versuchen Sie, es zu implementieren, indem Sie [Task Cancellation] verwenden (https://docs.microsoft.com/en-us/dotnet/standard/parallel-programming/task-cancellation) –

Antwort

0

Sie könnten die Daten zeilenweise in DataGridView laden und prüfen, ob die Schaltfläche jedes Mal gedrückt wurde, wenn eine neue Zeile hinzugefügt wird. Das würde das DataGridView etwas langsamer füllen, bietet aber die Funktionalität, nach der Sie fragen ...

Vielleicht setzen Sie ein Bool auf True, wenn die Taste gedrückt wurde. Dann überprüfe den Bool-Status in der Populationsschleife und wenn True verwendet 'Return;' um den populationsloop zu verlassen.