Laden...

Datagridview extrem langsam, wenn in einzelnen Zellen sehr viel Text steht

Erstellt von Sythus vor 12 Jahren Letzter Beitrag vor 12 Jahren 1.491 Views
S
Sythus Themenstarter:in
166 Beiträge seit 2009
vor 12 Jahren
Datagridview extrem langsam, wenn in einzelnen Zellen sehr viel Text steht

Hallo Zusammen,

ich fülle per Datatable ein DataGridView.

Selbst wenn ich das Grid mit nur einer Zeile fülle dauert das Spaltenvergrößeren oder der typische Doppelklick damit das Grid automatisch die Größe der Spalte anpasst extrem lange.
Dazu muss ich auch sagen das in einer Zeller auch manchmal etwas mehr Daten stehen können (100 Zeilen aufwärts)

Nutze Windows 7 und bin leicht am verzweifeln da DataGridView doch eigentlich super schnell sein soll.

Habe auch schon die Forensuche bemüht und viel gefunden aber nichts was wirklich auf mein Problem passt.

Events nutze ich keine, auch keine AutoSize Funktionen.

Bin für jede Hilfe dankbar.

Gruß
Sythus

S
443 Beiträge seit 2008
vor 12 Jahren

Da wird Dir wahrscheinlich nur ein Profiler helfen können der Dir aufzeigt welcher Code beim Spaltegrösse anpassen ausgeführt wird.
(JetBrainsDotTrace ist das Programm meiner Wahl, gibts auch ne Demoversion)

D.h. den Code finden der ausgeführt wird, dann weist Du auch was es so langsam macht

mbg
Rossegger Robert
mehr fragen mehr wissen

Montag morgen ist die beste Zeit um eine erfolgreiche Woche zu beginnen

S
Sythus Themenstarter:in
166 Beiträge seit 2009
vor 12 Jahren

Danke für den Tip.

Liegt also eindeutig an der Menge des Textes. Die Zelle ist wohl einfach nicht dafür gemacht soviel Text zu beinhalten.

Hat jemand vielleicht Alternativen? Was könnt ich denn sonst nehmen?

Das ganze dient eigentlich dazu Datensätze zu vergleichen und ein Feld des Datensatzes hat nunmal sehr viele Einträge da es sich um ein Memofeld handelt.

Jemand vielleicht eine Idee?

Sythus

S
443 Beiträge seit 2008
vor 12 Jahren

Wie zeigst Du die Datensätze an?

Um welchen Vergleich geht es da? eine Art Merge?

Welche Datensätze werden verglichen? Die gleichen, nur ne andere Version?

Nur so ein Vorschlag:
Könnte man die Anzeige so umbauen, dass das Grid in der Mitte ist und links und rechts davon ein/mehrere MemoEdit in denen die Inhalte dieser Felder angezeigt wird?

mbg
Rossegger Robert
mehr fragen mehr wissen

Montag morgen ist die beste Zeit um eine erfolgreiche Woche zu beginnen

S
Sythus Themenstarter:in
166 Beiträge seit 2009
vor 12 Jahren

Sorry ich habe es ein wenig "Waschig" erklärt

Ein Änderungserfassungsystem nimmt Änderungen an Angebots- und Stamm- datensätzen auf und speichert diese in eine extra Tabelle.

Die Änderungen vom vorherigen zum neuen Datensatz werden in einer extra Spalte erfasst.

(Soviel nur, damit klar wird worum es geht)

Ziel ist es nun, die Historie eines Datensatzes übersichtlich anzuzeigen.
Damit sofort gesehen werden kann, wann was geändert wurde.

Um das zu lösen wollte ich die Datensätze in einem DataGridView untereinander anzeigen. (nur die geänderten Felder - also werden die Felder die angezeigt werden je nach Datensatz dynamisch erzeugt)

Dabei gibt es Felder mit sehr kurzem Inhalt aber eben auch Felder wie das Memofeld wo sehr viel drin stehen kann. Da das DataGridView mit viel Daten in einer Zelle aber nicht zurecht kommt suche ich nach einer Alternative.

Vielleicht kommt ein ListView ja besser mit vielen Daten in einer Zelle zurecht?

Ich hoffe ich konnte mein Problem verdeutlichen.

Vielen dank schonmal 😃

S
443 Beiträge seit 2008
vor 12 Jahren

ganz habe ich es noch immer nicht verstanden, aber generell würde ich mich da mal von diesem DataGrid verabschieden.
Wenn Du vorher/nachher vergleichen musst würde ich bei der Anzeige eher auf etwas WinMerge ähnliches wechseln.

Links und rechts die TextBoxen oder MemoEdits die benötigt werden um den Datensatz anzuzeigen und in der mitte ein kleines DataGrid indem nur das Datum und wer es geändert hat steht.

MemoEdits und TextEdits sind sicher schneller in der Anzeige und ein MemoEdit eignet sich sicher besser um einen grossen Inhalt anzuzeigen als eine popplige DataGrid Zelle.

die Idee mit dem Listview würde ich gleich wieder vergessen, das Ding eignet sich sicher nicht dafür.

mbg
Rossegger Robert
mehr fragen mehr wissen

Montag morgen ist die beste Zeit um eine erfolgreiche Woche zu beginnen

S
Sythus Themenstarter:in
166 Beiträge seit 2009
vor 12 Jahren

Danke dir, das gefällt mir gut. Werde nun ein eigenes Control für die Datensätze bauen das aus Textboxen und MemoeEits besteht.

Das ist die beste Lösung.

Merci!

S
443 Beiträge seit 2008
vor 12 Jahren

Du könntest die Sache dadurch auch relativ generisch halten,
Wenn der Datensatz aus einer anderen Tabelle kommt, kannst Du ein anderes control links und rechts anzeigen.

und wenn du einen brauchbaren monitor hast (> 21") dann ist das auch noch ne tolle und übersichtliche Ansicht.

mbg
Rossegger Robert
mehr fragen mehr wissen

Montag morgen ist die beste Zeit um eine erfolgreiche Woche zu beginnen