UI Widgets Box

A container widget used to arrange inner elements.

Included in: dx.phonejs.js, dx.webappjs.js, dx.all.js

The widget can arrange inner elements horizontally or vertically depending on the direction option value and align the elements according to the align and crossAlign option values.

You can create a widget using one of the following approaches.

  • jQuery
    Use the dxBox jQuery plug-in.

    HTML
    <div id="box">
        <div id="item1" data-options="dxItem:{ ratio: 1, baseSize: 10}">
            . . .
        </div>
        <div id="item2" data-options="dxItem:{ ratio: 3, baseSize: 40}">
            . . .
        </div>
        <div id="item3" data-options="dxItem:{ ratio: 2, baseSize: 20}">
            . . .
        </div>
    </div>
    JavaScript
    $("#box").dxBox({
        direction: 'row',
        height: '70%',
        width: '90%'
    });
  • Knockout
    Add a div element and apply the dxBox binding to this element.

    HTML
    <div data-bind="dxBox: {
        direction: 'row',
        height: '70%',
        width: '90%'
    }">
        <div id="item1" data-options="dxItem:{ ratio: 1, baseSize: 10}">
            . . .
        </div>
        <div id="item2" data-options="dxItem:{ ratio: 3, baseSize: 40}">
            . . .
        </div>
        <div id="item3" data-options="dxItem:{ ratio: 2, baseSize: 20}">
            . . .
        </div>
    </div>
  • Angular
    Add a div element and apply the dx-box directive to this element.

    HTML
    <div dx-box="{
        direction: 'row',
        height: '70%',
        width: '90%'
    }">
        <div id="item1" data-options="dxItem:{ ratio: 1, baseSize: 10}">
            . . .
        </div>
        <div id="item2" data-options="dxItem:{ ratio: 3, baseSize: 40}">
            . . .
        </div>
        <div id="item3" data-options="dxItem:{ ratio: 2, baseSize: 20}">
            . . .
        </div>
    </div>

Note that DevExtreme widgets require you to link the jQuery and Globalize libraries to your application. If you use the Knockout or Angular approach, the Knockout or Angular library is also required. For detailed information on linking these libraries to your project, refer to the Installation article.

Refer to the Layout Widgets guide for more information on working with the dxBox widget.

View Demo

Watch Video

Show Example:
AngularJS
Knockout
jQuery
<div ng-controller="demoController" style="height: 100%;">
    <div class="box" dx-box="{
        height: '70%',
        width: '90%',
        bindingOptions: {
            direction: 'directionValue'
        }
    }">
        <div id="item1" data-options="dxItem:{ ratio: 1, baseSize: 10 }"><p></p></div>
        <div id="item2" data-options="dxItem:{ ratio: 3, baseSize: 0 }"><p></p></div>
        <div id="item3" data-options="dxItem:{ ratio: 2, baseSize: 20 }"><p></p></div>
    </div>
    <div class="dx-fieldset">
      <div class="dx-field">
        <div class="dx-field-label">direction</div>
          <div class="dx-field-value" ng-model="directionValue" dx-select-box="{
            dataSource: directionValues
        }"></div>
      </div>
    </div>
</div>
var myApp = angular.module('myApp', ['dx']);
myApp.controller("demoController", function ($scope) {
    $scope.directionValues = ['row', 'col'];
    $scope.directionValue = 'row'
});
angular.element(document).ready(function () {
    angular.bootstrap(document, ['myApp']);
});
body {
    text-align: center;
}
.box{
    margin: 10px auto;
    border: solid 2px;
}
.dx-box-item {
    overflow: hidden;
}
#item1{ 
    background-color: #f39e6c; 
}
#item2{ 
    background-color: #f5e5a6; 
}
#item3{ 
    background-color: #94d7c7; 
}
<div class="box" data-bind="dxBox:{
    direction: directionValue,
    height: '70%',
    width: '90%'
}">
    <div id="item1" data-options="dxItem:{ ratio: 1, baseSize: 10}"><p></p></div>
    <div id="item2" data-options="dxItem:{ ratio: 3, baseSize: 0}"><p></p></div>
    <div id="item3" data-options="dxItem:{ ratio: 2, baseSize: 20}"><p></p></div>
</div>
<div class="dx-fieldset">
  <div class="dx-field">
    <div class="dx-field-label">direction</div>
    <div class="dx-field-value" data-bind="dxSelectBox: { value: directionValue, dataSource: directionValues }"></div>
  </div>
</div>
var myViewModel = {
    directionValues: ['row', 'col'],
    directionValue: ko.observable('row')
}
ko.applyBindings(myViewModel);
body {
    text-align: center;
}
.box{
    margin: 10px auto;
    border: solid 2px;
}
.dx-box-item {
    overflow: hidden;
}
#item1{ 
    background-color: #f39e6c; 
}
#item2{ 
    background-color: #f5e5a6; 
}
#item3{ 
    background-color: #94d7c7; 
}
<div class="box" id="myBox">
    <div id="item1" data-options="dxItem:{ ratio: 1, baseSize: 10 }"><p></p></div>
    <div id="item2" data-options="dxItem:{ ratio: 3, baseSize: 0 }"><p></p></div>
    <div id="item3" data-options="dxItem:{ ratio: 2, baseSize: 20 }"><p></p></div>
</div>
<div class="dx-fieldset">
  <div class="dx-field">
    <div class="dx-field-label">direction</div>
    <div class="dx-field-value" id="directionSelector"></div>
  </div>
</div>
$("#myBox").dxBox({
    height: '70%',
    width: '90%'
});
$("#directionSelector").dxSelectBox({
    value: 'row',
    dataSource: ['row', 'col'],
    onValueChanged: function (e) {
        $("#myBox").dxBox("instance").option("direction", e.value);
    }
});
body {
    text-align: center;
}
.box{
    margin: 10px auto;
    border: solid 2px;
}
.dx-box-item {
    overflow: hidden;
}
#item1{ 
    background-color: #f39e6c; 
}
#item2{ 
    background-color: #f5e5a6; 
}
#item3{ 
    background-color: #94d7c7; 
}

Configuration

An object defining configuration options for the dxBox widget.

Methods

This section describes members used to manipulate the widget.

Events

This section describes events fired by this widget.

Default Item Template

This section lists the data source fields that are used in a default template for list items.

By default, a predefined item template is applied to display the items of this widget. This template is based on certain fields of the data source provided for this widget. Below is a list of these fields. If the default item template is not appropriate for your task, implement a custom item template based on these or other fields of your data source.

See Also