Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Med virtuellt läge kan du hantera interaktionen mellan DataGridView-kontrollen och en anpassad datacache. Om du vill implementera virtuellt läge anger du egenskapen VirtualMode till true och hanterar en eller flera av händelserna som beskrivs i det här avsnittet. Du hanterar vanligtvis minst den CellValueNeeded händelsen, vilket gör att kontrollen söker efter värden i datacachen.
Bundet läge och virtuellt läge
Virtuellt läge är bara nödvändigt när du behöver komplettera eller ersätta bundet läge. I bundet läge anger du egenskapen DataSource och kontrollen läser automatiskt in data från den angivna källan och skickar tillbaka användarändringar till den. Du kan styra vilka av de bundna kolumnerna som visas och själva datakällan hanterar vanligtvis åtgärder som sortering.
Komplettering av bundet läge
Du kan komplettera bundet läge genom att visa obundna kolumner tillsammans med de bundna kolumnerna. Detta kallas ibland "blandat läge" och är användbart för att visa saker som beräknade värden eller användargränssnittskontroller (UI).
Eftersom obundna kolumner ligger utanför datakällan ignoreras de av datakällans sorteringsåtgärder. När du aktiverar sortering i blandat läge måste du därför hantera obundna data i en lokal cache och implementera virtuellt läge så att DataGridView kontroll interagerar med den.
Mer information om hur du använder virtuellt läge för att underhålla värdena i obundna kolumner finns i exemplen i DataGridViewCheckBoxColumn.ThreeState-egenskapen och System.Windows.Forms.DataGridViewComboBoxColumn klassreferensavsnitt.
Ersätta bundet läge
Om bundet läge inte uppfyller dina prestandabehov kan du hantera alla dina data i en anpassad cache via händelsehanterare i virtuellt läge. Du kan till exempel använda virtuellt läge för att implementera en mekanism för just-in-time-datainläsning som endast hämtar så mycket data från en nätverksdatabas som krävs för optimala prestanda. Det här scenariot är särskilt användbart när du arbetar med stora mängder data via en långsam nätverksanslutning eller med klientdatorer som har en begränsad mängd RAM-minne eller lagringsutrymme.
Mer information om hur du använder virtuellt läge i ett just-in-time-scenario finns i Implementera virtuellt läge med Just-In-Time Data Loading i Windows Forms DataGridView Control.
Virtual-Mode händelser
Om dina data är skrivskyddade kan CellValueNeeded-händelsen vara den enda händelse du behöver hantera. Med ytterligare händelser i virtuellt läge kan du aktivera specifika funktioner som användarredigeringar, radtillägg och borttagning samt transaktioner på radnivå.
Vissa standardhändelser DataGridView (till exempel händelser som inträffar när användare lägger till eller tar bort rader, eller när cellvärden redigeras, parsas, verifieras eller formateras) är också användbara i virtuellt läge. Du kan också hantera händelser som gör att du kan underhålla värden som vanligtvis inte lagras i en bunden datakälla, till exempel text i cellverktyg, text för cell- och radfel, snabbmenydata för cell och rad samt radhöjdsdata.
Mer information om hur du implementerar virtuellt läge för att hantera läs-/skrivdata med ett incheckningsomfång på radnivå finns i Genomgång: Implementera virtuellt läge i Windows Forms DataGridView Control.
Ett exempel som implementerar virtuellt läge med ett incheckningsomfång på cellnivå finns i egenskapsreferensen VirtualMode.
Följande händelser inträffar bara när egenskapen VirtualMode är inställd på true.
| Evenemang | Beskrivning |
|---|---|
| CellValueNeeded | Används av kontrollen för att hämta ett cellvärde från datacachen för visning. Den här händelsen inträffar endast för celler i obundna kolumner. |
| CellValuePushed | Används av kontrollen för att överföra användarens indata för en cell till datacachen. Den här händelsen inträffar endast för celler i obundna kolumner. Anropa metoden UpdateCellValue när du ändrar ett cachelagrat värde utanför en CellValuePushed händelsehanterare för att säkerställa att det aktuella värdet visas i kontrollen och för att tillämpa eventuella automatiska storlekslägen som för närvarande tillämpas. |
| NewRowNeeded | Används av kontrollen för att ange behovet av en ny rad i datacachen. |
| RowDirtyStateNeeded | Används av kontrollmekanismen för att avgöra om en rad har några icke-godkända ändringar. |
| CancelRowEdit | Används av kontrollen för att indikera att en rad ska återgå till sina cachelagrade värden. |
Följande händelser är användbara i virtuellt läge, men kan användas oavsett VirtualMode egenskapsinställning.
| Evenemang | Beskrivning |
|---|---|
| UserDeletingRow UserDeletedRow RowsRemoved RowsAdded |
Används av kontrollen för att ange när rader tas bort eller läggs till, så att du kan uppdatera datacachen därefter. |
| CellFormatting CellParsing CellValidating CellValidated RowValidating RowValidated |
Används av kontrollen för att formatera cellvärden för visning och för att parsa och verifiera användarindata. |
| CellToolTipTextNeeded | Används av kontrollen för att hämta cellen ToolTip-text när egenskapen DataSource har angetts eller egenskapen VirtualMode är true.Verktygstips för celler visas bara när egenskapsvärdet för ShowCellToolTips är true. |
| CellErrorTextNeeded RowErrorTextNeeded |
Används av kontrollen för att hämta cell- eller radfeltext när egenskapen DataSource har angetts eller egenskapen VirtualMode är true.Anropa metoden UpdateCellErrorText eller UpdateRowErrorText när du ändrar cell- eller radfeltexten för att säkerställa att det aktuella värdet visas i kontrollen. Felmarkeringar för celler och rader visas när egenskapsvärdena ShowCellErrors och ShowRowErrors är true. |
| CellContextMenuStripNeeded RowContextMenuStripNeeded |
Används av kontrollen för att hämta en cell eller rad ContextMenuStrip när kontrollens DataSource-egenskap är angiven eller egenskapen VirtualMode är true. |
| RowHeightInfoNeeded RowHeightInfoPushed |
Används av kontrollen för att hämta eller lagra radhöjdsinformation i datacachen. Anropa metoden UpdateRowHeightInfo när du ändrar informationen om cachelagrad radhöjd utanför en RowHeightInfoPushed händelsehanterare för att säkerställa att det aktuella värdet används i kontrollens visning. |
Metodtips i virtuellt läge
Om du implementerar virtuellt läge för att kunna arbeta effektivt med stora mängder data vill du också se till att du arbetar effektivt med själva DataGridView kontrollen. Mer information om effektiv användning av cellformat, automatisk storleksändring, val och raddelning finns i Metodtips för skalning av Windows Forms DataGridView Control.
Se även
- DataGridView
- VirtualMode
- Prestandaoptimering i Windows Forms DataGridView-kontroll
- metodtips för att skala Windows Forms DataGridView-kontrollen
- Handledning: Implementera virtuellt läge i Windows Forms DataGridView-kontroller
- Implementera virtuellt läge med just-In-Time datainläsning i Windows Forms DataGridView Kontroll
.NET Desktop feedback