DevExtreme v23.2 is now available.

Explore our newest features/capabilities and share your thoughts with us.

Your search did not match any results.

Columns Adaptability

The Form component can use different layouts depending on the screen width. Click one of the buttons on the right from the demo title to switch between horizontal and vertical orientations. You can determine the number of columns in the Form in one of the following ways:

Calculate the Number of Columns Automatically

To automatically calculate the number of columns based on the screen width, follow these steps:

  1. Assign "auto" to the colCount property to make the number of columns adapt to any screen size.

  2. Use the minColWidth property to specify the minimum column width.

In this demo, the number of columns is calculated automatically when the check box under the Form is clear.

Predefine the Number of Columns for Each Screen Size

In this case, screen sizes are classified into one of the following categories called "size qualifiers": extra small, small, medium, or large. You specify the number of columns for each size qualifier. Follow the steps below to configure this behavior:

  1. Use the screenByWidth function to map screen widths to size qualifiers. This demo classifies screens narrower than 720 pixels as small and treats all other screens as medium.

  2. Specify the colCountByScreen property to define how many columns the Form should contain depending on the available screen qualifiers.

In this demo, mark the check box under the Form to enable this configuration.

Backend API
$(() => { const form = $('#form').dxForm({ formData: employee, labelLocation: 'top', minColWidth: 233, colCount: 'auto', colCountByScreen: { md: 4, sm: 2, }, screenByWidth(width) { return width < 720 ? 'sm' : 'md'; }, }).dxForm('instance'); $('#useColCountByScreen').dxCheckBox({ onValueChanged(e) { if (e.value) { form.option('colCountByScreen.sm', undefined); form.option('colCountByScreen.md', undefined); } else { form.option('colCountByScreen.sm', 2); form.option('colCountByScreen.md', 4); } }, text: 'Calculate the number of columns automatically', value: false, }); });
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>DevExtreme Demo</title> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0" /> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script> <script>window.jQuery || document.write(decodeURIComponent('%3Cscript src="js/jquery.min.js"%3E%3C/script%3E'))</script> <link rel="stylesheet" type="text/css" href="https://cdn3.devexpress.com/jslib/23.2.5/css/dx.light.css" /> <script src="js/dx.all.js"></script> <script src="data.js"></script> <link rel="stylesheet" type="text/css" href="styles.css" /> <script src="index.js"></script> </head> <body class="dx-viewport"> <div class="demo-container"> <div id="form"></div> <div class="options"> <div class="caption">Options</div> <div class="option"> <div id="useColCountByScreen"></div> </div> </div> </div> </body> </html>
#form { padding: 10px 10px 110px; } .options { padding: 20px; background-color: rgba(191, 191, 191, 0.15); left: 0; position: absolute; bottom: 0; right: 0; } .caption { font-size: 18px; font-weight: 500; } .option { margin-top: 10px; }
const employee = { ID: 1, FirstName: 'John', LastName: 'Heart', CompanyName: 'Super Mart of the West', Position: 'CEO', OfficeNo: '901', BirthDate: new Date(1964, 2, 16), HireDate: new Date(1995, 0, 15), Address: '351 S Hill St.', City: 'Los Angeles', State: 'CA', Zipcode: '90013', Phone: '+1(213) 555-9392', Email: 'jheart@dx-email.com', Skype: 'jheart_DX_skype', };