Data View Layout Modes
- 3 minutes to read
The DevExpress MVC Data View extension can organize its data items in different ways depending on the chosen layout mode.
- Table Layout - Organizes items in a table with a specified number of rows and columns.
- Flow Layout - Arranges data items one after another to occupy all the available space.
- Breakpoints - Reorganizes data items according to custom layout scenarios for different browser widths.
You can specify the layout mode by setting the DataViewSettings.Layout property to one of the Layout values. The default layout is Table.
Table Layout
In Table layout mode, the extension organizes its data items in a table with the specified number of columns and rows.
The Data View provides access to the Table layout mode settings using the ASPxDataView.SettingsTableLayout property, which is an object of the DataViewTableLayoutSettings type.
- DataViewTableLayoutSettings.RowsPerPage - Specifies the number of rows.
- DataViewTableLayoutSettings.ColumnCount - Specifies the number of columns.
The Data View automatically defines an item size based on the extension’s size and provided table dimensions. Changing the extension’s size (e.g., by window resizing) recalculates the item size.
In Table layout mode, the extension calculates the number of items displayed on a single page according to the specified table dimensions (RowsPerPage and ColumnCount). If an end-user changes the page size using the pager UI, it affects the number of rows. The number of columns can be changed only programmatically.
Flow Layout
In Flow layout mode, data items flow one after another to fill the available area.
The Data View provides access to the Flow layout mode settings using the DataViewSettings.SettingsFlowLayout object of the DataViewFlowLayoutSettings type. The DataViewDivBasedLayoutSettings.ItemsPerPage property allows you to set the number of items displayed on a single page.
The DataViewItemStyle.Width and DataViewItemStyle.Height settings (ASPxDataViewBase.ItemStyle.Width and ASPxDataViewBase.ItemStyle.Height) specify an item size. The item size doesn’t depend on the extension’s size. Changing the extension’s size rearranges the items inside the Data View.
Adaptive Grid Layout (Breakpoints)
In this mode, the Data View reorganizes its data items according to custom layout scenarios for different browser widths. It allows you to display, for example, three data items in a row for smaller screens and five data items in a row for larger screens.
This functionality is based on specifying the browser widths (breakpoints) at which the Data View shifts and resizes its items.
The DataView stores breakpoints in the BreakpointsLayoutCollection<T> object that is accessed at the DataViewBreakpointsLayoutSettings object level. Each breakpoint is a DataViewBreakpoint class instance. You can change the following characteristics of individual breakpoints.
Property | Description |
---|---|
BreakpointsLayoutBreakpoint.DeviceSize | Specifies the device size (“Small”, “Medium”, “Large”). |
DataViewBreakpoint.ItemsPerRow, DataViewBreakpointsLayoutSettingsBase.ItemsPerRow | Specifies the number of items the Data View displays in a row. |
BreakpointsLayoutBreakpoint.MaxWidth | Specifies the maximum browser width at which the extension rearranges its items when the BreakpointsLayoutBreakpoint.DeviceSize property is set to BreakpointsLayoutDeviceSizes.Custom. |
Creating a DataViewBreakpoint object declares a range of browser widths between 0 and BreakpointsLayoutBreakpoint.DeviceSize/BreakpointsLayoutBreakpoint.MaxWidth property value (if there are no breakpoints with a lower DeviceSize/MaxWidth property value) where the Data View arranges the specified number of items in a row (DataViewBreakpoint.ItemsPerRow).
Use the DataViewBreakpointsLayoutSettingsBase.ItemsPerRow property to define how many items the Data View displays in a row if there are no specified breakpoints for a given browser’s width.
Online Demo
Refer to the Data View - Adaptive Layout online demo to see this feature in action.
Example
The following example illustrates how to implement three different layout scenarios for three different browser’s sizes (Small, Medium, Large).
@Html.DevExpress().DataView(settings => {
...
settings.Layout = DevExpress.Web.Layout.Breakpoints;
settings.SettingsBreakpointsLayout.ItemsPerRow = 5;
settings.SettingsBreakpointsLayout.Breakpoints.Add(BreakpointsLayoutDeviceSizes.Small, 3);
settings.SettingsBreakpointsLayout.Breakpoints.Add(BreakpointsLayoutDeviceSizes.Custom, 1300, 4);
...
}).GetHtml()