# Virtual Mode

## Content

Virtual mode allows **DataSource for Entity Framework** to provide data binding of GUI controls to very large data sets with no delays, no code, and without resorting to paging. This is done by simply setting the **ClientViewSource.VirtualMode** property. It has three possible values:

* **None**: Virtual mode is not enabled. This is the default value.
* **Managed**: Virtual mode (fetching data from the server) is driven by a grid control. The grid control driving it is specified by setting an extender (attached) property on the grid. Most popular grids are supported, but not all grids (see the list below). If you need virtual mode with one of the supported grids, use the **Managed** option, do not use **Unmanaged**. Performance is optimal with the **Managed** option because it is specifically optimized for the grid in question. In addition to the grid control there can be other simple controls bound to the same data source (for example, TextBox controls), but no "complex" bound control (for example, another grid or list) in addition to the driving grid should be used.

**Managed** mode is currently supported for the following grid controls:

* **ComponentOne**: C1FlexGrid (WinForms, WPF, Silverlight), C1DataGrid (WPF, Silverlight).
* **Microsoft**: DataGridView (WinForms), DataGrid (WPF), DataGrid (Silverlight; but see below about a problem with Microsoft DataGrid for Silverlight).
* **Unmanaged**: Virtual mode (fetching data from the server) is driven by the data source itself, regardless of what type of controls are bound to it. Use this option if you need virtual mode with a grid/list/etc. control that does not belong to the list of supported grids below (but note that “simple” controls such as TextBox that are only bound to the current record and not to the entire data set can be used without limitations with either **Managed** or **Unmanaged** mode). Performance in **Unmanaged** is almost as good as in **Managed**, but it is subject to some limitations. See Unmanaged virtual mode limitations for more information. Those limitations are not very restricting, but they cannot be checked automatically, so, before deciding to use the **Unmanaged** option, make sure you do not break the [limitation rules](/componentone/docs/win/online-datasource/ProgrammingGuide/VirtualMode/UnmanagedVirtualModeLimitations). Also, in **Unmanaged** mode, the **PageSize** property must be set to a number greater than your GUI control will show at any given time (PageSize is ignored in Managed mode).

## See Also

[Unmanaged Virtual Mode Limitations](/componentone/docs/win/online-datasource/ProgrammingGuide/VirtualMode/UnmanagedVirtualModeLimitations)

[Other Limitations of Virtual Mode](/componentone/docs/win/online-datasource/ProgrammingGuide/VirtualMode/OtherVirtualModeLimitations)