ScrollView Configuration

An object defining configuration options for the dxScrollView widget.

bounceEnabled

A Boolean value specifying whether to enable or disable the bounce-back effect.

Type: Boolean
Default Value: true
Default for desktop: false

If the option is set to true, you can scroll the widget content up (down) even if you have reached the bottom (top) boundary. But when you release the content, it returns to the bound position. If the option value is false, you can scroll the widget content until you reach the boundary.

direction

A string value specifying the available scrolling directions.

Type: String
Default Value: "vertical"
Accepted Values: 'vertical'|'horizontal'|'both'

Show Example:
AngularJS
Knockout
jQuery
<div ng-controller="demoController" style="height:100%;">
    <div id="myScrollView" dx-scroll-view="{
        bindingOptions: {
            direction: 'scrollingDirection'
        }
    }">
        <div id="textContainer"></div>
    </div>
    <div class="dx-fieldset">
        <div class="dx-field">
            <div class="dx-field-label">direction</div>
            <div class="dx-field-value" dx-select-box="{ 
                items: directions,
                bindingOptions: {
                    value: 'scrollingDirection'
                }
            }"></div>
        </div>
    </div>
</div>
$.ajax({
    type: "POST",
    url: "/LoremService.asmx/LoremIpsum",
    data: JSON.stringify({ count: Math.ceil(Math.random() * 30) }),
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: function (data) {
        $.each(data.d, function (index, value) {
            $("#textContainer").append("<p>" + value + "</p>");
        });
    }
});
var myApp = angular.module('myApp', ['dx']);
myApp.controller("demoController", function ($scope) {
    $scope.directions = ["vertical", "horizontal", "both"];
    $scope.scrollingDirection = "vertical";
});
angular.element(document).ready(function () {
    angular.bootstrap(document, ['myApp']);
});
p{
    padding: 5px 10px;
    margin: 0;
}
.content{
    height: 100%;
}
.dx-scrollable-content{
    width: 200%;
}
#myScrollView{
    margin: 10px;
    height: 70%;
}
<div id="myScrollView" data-bind="dxScrollView: {
    direction: scrollingDirection
}">
    <div id="textContainer"></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: { 
            items: directions,
            value: scrollingDirection
        }"></div>
    </div>
</div>
$.ajax({
    type: "POST",
    url: "/LoremService.asmx/LoremIpsum",
    data: JSON.stringify({ count: Math.ceil(Math.random() * 30) }),
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: function (data) {
        $.each(data.d, function (index, value) {
            $("#textContainer").append("<p>" + value + "</p>");
        });
    }
});
var myViewModel = {
    directions: [ "vertical", "horizontal", "both" ],
    scrollingDirection: ko.observable("vertical")
}
ko.applyBindings(myViewModel);
p{
    padding: 5px 10px;
    margin: 0;
}
.content{
    height: 100%;
}
.dx-scrollable-content{
    width: 200%;
}
#myScrollView{
    margin: 10px;
    height: 70%;
}
<div id="myScrollView">
    <div id="textContainer"></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>
$.ajax({
    type: "POST",
    url: "/LoremService.asmx/LoremIpsum",
    data: JSON.stringify({ count: Math.ceil(Math.random() * 30) }),
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: function (data) {
        $.each(data.d, function (index, value) {
            $("#textContainer").append("<p>" + value + "</p>");
        });
    }
});
$("#myScrollView").dxScrollView({
    direction: "vertical"
});
$("#directionSelector").dxSelectBox({
    items: ["vertical", "horizontal", "both"],
    value: "vertical",
    onValueChanged: function (e) {
        $("#myScrollView").dxScrollView("instance").option("direction", e.value);
    }
});
p{
    padding: 5px 10px;
    margin: 0;
}
.content{
    height: 100%;
}
.dx-scrollable-content{
    width: 200%;
}
#myScrollView{
    margin: 10px;
    height: 70%;
}

disabled

A Boolean value specifying whether or not the widget can respond to user interaction.

Type: Boolean
Default Value: false

Create an observable variable and assign it to this option to specify the availability of the widget at runtime.

Show Example:
AngularJS
Knockout
jQuery
<div ng-controller="demoController" style="height:100%;">
    <div id="myScrollView" dx-scroll-view="{
        bindingOptions: {
            disabled: 'disabledValue'
        }
    }">
        <div id="textContainer"></div>
    </div>
    <div class="dx-fieldset">
        <div class="dx-field">
            <div class="dx-field-label">disabled</div>
            <div class="dx-field-value" dx-switch="{ 
                bindingOptions: {
                    value: 'disabledValue'
                }
            }"></div>
        </div>
    </div>
</div>
$.ajax({
    type: "POST",
    url: "/LoremService.asmx/LoremIpsum",
    data: JSON.stringify({ count: Math.ceil(Math.random() * 30) }),
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: function (data) {
        $.each(data.d, function (index, value) {
            $("#textContainer").append("<p>" + value + "</p>");
        });
    }
});
var myApp = angular.module('myApp', ['dx']);
myApp.controller("demoController", function ($scope) {
    $scope.disabledValue = false;
});
angular.element(document).ready(function () {
    angular.bootstrap(document, ['myApp']);
});
p{
    padding: 5px 10px;
    margin: 0;
}
.content{
    height: 100%;
}
#myScrollView{
    margin: 10px;
    height: 70%;
}
<div id="myScrollView" data-bind="dxScrollView: {
    disabled: disabledValue
}">
    <div id="textContainer"></div>
</div>
<div class="dx-fieldset">
    <div class="dx-field">
        <div class="dx-field-label">disabled</div>
        <div class="dx-field-value" data-bind="dxSwitch: { 
            value: disabledValue
        }"></div>
    </div>
</div>
$.ajax({
    type: "POST",
    url: "/LoremService.asmx/LoremIpsum",
    data: JSON.stringify({ count: Math.ceil(Math.random() * 30) }),
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: function (data) {
        $.each(data.d, function (index, value) {
            $("#textContainer").append("<p>" + value + "</p>");
        });
    }
});
var myViewModel = {
    disabledValue: ko.observable(false)
}
ko.applyBindings(myViewModel);
p{
    padding: 5px 10px;
    margin: 0;
}
.content{
    height: 100%;
}
#myScrollView{
    margin: 10px;
    height: 70%;
}
<div id="myScrollView">
    <div id="textContainer"></div>
</div>
<div class="dx-fieldset">
    <div class="dx-field">
        <div class="dx-field-label">disabled</div>
        <div class="dx-field-value" id="disabledSelector"></div>
    </div>
</div>
$.ajax({
    type: "POST",
    url: "/LoremService.asmx/LoremIpsum",
    data: JSON.stringify({ count: Math.ceil(Math.random() * 30) }),
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: function (data) {
        $.each(data.d, function (index, value) {
            $("#textContainer").append("<p>" + value + "</p>");
        });
    }
});
$("#myScrollView").dxScrollView();
$("#disabledSelector").dxSwitch({
    value: false,
    onValueChanged: function (e) {
        $("#myScrollView").dxScrollView("instance").option("disabled", e.value);
    }
});
p{
    padding: 5px 10px;
    margin: 0;
}
.content{
    height: 100%;
}
#myScrollView{
    margin: 10px;
    height: 70%;
}

onDisposing

A handler for the disposing event.

Type: function
Function parameters:
e: Object
Provides function parameters.
Object structure:
component: Object
Provides access to the widget instance.
element: jQuery
An HTML element of the widget.
model: Object
Provides access to the data that is available for binding against the element.
Default Value: null

Assign a function to perform a custom action when you dispose of this component.

onOptionChanged

A handler for the optionChanged event.

Type: function
Function parameters:
e: Object
Provides function parameters.
Object structure:
component: Object
Provides access to the widget instance.
element: jQuery
An HTML element of the widget.
model: Object
Provides access to the data that is available for binding against the element.
value: any
Specifies a new value for the option.
Default Value: null

Assign a function to perform a custom action after an option of the component is changed.

onPullDown

A handler for the pullDown event.

Type: function
Function parameters:
e: Object
Provides function parameters.
Object structure:
component: Object
Provides access to the widget instance.
element: jQuery
An HTML element of the widget.
model: Object
Provides access to the data that is available for binding against the element.
Default Value: null

Assign a function to perform a custom action after the widget is scrolled to the top and pulled down.

The function passed to this option should contain a call to the release() method, which releases the scroll view.

JavaScript
var scrollViewOptions = {
    onPullDown: function(options){
        . . .
        options.component.release();
    }
}

NOTE: The "pull down to refresh" gesture is not supported by desktop browsers and Windows Phone devices. You can use it only in mobile themes except the Windows Phone theme.

Show Example:
AngularJS
Knockout
jQuery
<div ng-controller="demoController" style="height:100%;">
    <div id="myScrollView" dx-scroll-view="{
        onPullDown: pulledDown
    }">
        <div id="textContainer"><p>Pull the text down</p></div>
    </div>
</div>
$.ajax({
    type: "POST",
    url: "/LoremService.asmx/LoremIpsum",
    data: JSON.stringify({ count: Math.ceil(Math.random() * 30) }),
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: function (data) {
        $.each(data.d, function (index, value) {
            $("#textContainer").append("<p>" + value + "</p>");
        });
    }
});
var myApp = angular.module('myApp', ['dx']);
myApp.controller("demoController", function ($scope) {
    $scope.pulledDown = function (e) {
        DevExpress.ui.notify("The widget has been pulled down", "success");
        e.component.release();
    };
});
angular.element(document).ready(function () {
    angular.bootstrap(document, ['myApp']);
});
p{
    padding: 5px 10px;
    margin: 0;
}
.content{
    height: 100%;
}
#textContainer p:first-child{
    font-size: large;
    margin-top: 10px;
    color: red;
    text-align: center;
}
#myScrollView{
    margin: 10px;
}
<div id="myScrollView" data-bind="dxScrollView: {
    onPullDown: pulledDown
}">
    <div id="textContainer"><p>Pull the text down</p></div>
</div>
$.ajax({
    type: "POST",
    url: "/LoremService.asmx/LoremIpsum",
    data: JSON.stringify({ count: Math.ceil(Math.random() * 30) }),
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: function (data) {
        $.each(data.d, function (index, value) {
            $("#textContainer").append("<p>" + value + "</p>");
        });
    }
});
var myViewModel = {
    pulledDown: function (e) {
        DevExpress.ui.notify("The widget has been pulled down", "success");
        e.component.release();
    }
}
ko.applyBindings(myViewModel);
p{
    padding: 5px 10px;
    margin: 0;
}
.content{
    height: 100%;
}
#textContainer p:first-child{
    font-size: large;
    margin-top: 10px;
    color: red;
    text-align: center;
}
#myScrollView{
    margin: 10px;
}
<div id="myScrollView">
    <div id="textContainer"><p>Pull the text down</p></div>
</div>
$.ajax({
    type: "POST",
    url: "/LoremService.asmx/LoremIpsum",
    data: JSON.stringify({ count: Math.ceil(Math.random() * 30) }),
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: function (data) {
        $.each(data.d, function (index, value) {
            $("#textContainer").append("<p>" + value + "</p>");
        });
    }
});
$("#myScrollView").dxScrollView({
    onPullDown: function (e) {
        DevExpress.ui.notify("The widget has been pulled down", "success");
        e.component.release();
    }
});
p{
    padding: 5px 10px;
    margin: 0;
}
.content{
    height: 100%;
}
#textContainer p:first-child{
    font-size: large;
    margin-top: 10px;
    color: red;
    text-align: center;
}
#myScrollView{
    margin: 10px;
}

onReachBottom

A handler for the reachBottom event.

Type: function
Function parameters:
e: Object
Provides function parameters.
Object structure:
component: Object
Provides access to the widget instance.
element: jQuery
An HTML element of the widget.
model: Object
Provides access to the data that is available for binding against the element.
Default Value: null

Assign a function to perform a custom action after the widget is scrolled to the bottom and pulled up.

The function passed to this option should contain a call to the release() method, which releases the scroll view.

JavaScript
var scrollViewOptions = {
    onReachBottom: function(options){
        . . .
        options.component.release();
    }
}
Show Example:
AngularJS
Knockout
jQuery
<div ng-controller="demoController" style="height:100%;">
    <div id="myScrollView" dx-scroll-view="{
        onReachBottom: reachedBottom
    }">
        <div id="textContainer"><p>Scroll to bottom</p></div>
    </div>
</div>
$.ajax({
    type: "POST",
    url: "/LoremService.asmx/LoremIpsum",
    data: JSON.stringify({ count: 5 }),
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: function (data) {
        $.each(data.d, function (index, value) {
            $("#textContainer").append("<p>" + value + "</p>");
        });
    }
});
var myApp = angular.module('myApp', ['dx']);
myApp.controller("demoController", function ($scope) {
    $scope.reachedBottom = function (e) {
        DevExpress.ui.notify("You reached the widget bottom", "success");
        e.component.release();
    };
});
angular.element(document).ready(function () {
    angular.bootstrap(document, ['myApp']);
});
p{
    padding: 5px 10px;
    margin: 0;
}
.content{
    height: 100%;
}
#textContainer p:first-child{
    font-size: large;
    margin-top: 10px;
    color: red;
    text-align: center;
}
#myScrollView{
    margin: 10px;
}
<div id="myScrollView" data-bind="dxScrollView: {
    onReachBottom: reachedBottom
}">
    <div id="textContainer"><p>Scroll to bottom</p></div>
</div>
$.ajax({
    type: "POST",
    url: "/LoremService.asmx/LoremIpsum",
    data: JSON.stringify({ count: 5 }),
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: function (data) {
        $.each(data.d, function (index, value) {
            $("#textContainer").append("<p>" + value + "</p>");
        });
    }
});
var myViewModel = {
    reachedBottom: function (e) {
        DevExpress.ui.notify("You reached the widget bottom", "success");
        e.component.release();
    }
}
ko.applyBindings(myViewModel);
p{
    padding: 5px 10px;
    margin: 0;
}
.content{
    height: 100%;
}
#textContainer p:first-child{
    font-size: large;
    margin-top: 10px;
    color: red;
    text-align: center;
}
#myScrollView{
    margin: 10px;
}
<div id="myScrollView">
    <div id="textContainer"><p>Scroll to bottom</p></div>
</div>
$.ajax({
    type: "POST",
    url: "/LoremService.asmx/LoremIpsum",
    data: JSON.stringify({ count: 5 }),
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: function (data) {
        $.each(data.d, function (index, value) {
            $("#textContainer").append("<p>" + value + "</p>");
        });
    }
});
$("#myScrollView").dxScrollView({
    onReachBottom: function (e) {
        DevExpress.ui.notify("You reached the widget bottom", "success");
        e.component.release();
    }
});
p{
    padding: 5px 10px;
    margin: 0;
}
.content{
    height: 100%;
}
#textContainer p:first-child{
    font-size: large;
    margin-top: 10px;
    color: red;
    text-align: center;
}
#myScrollView{
    margin: 10px;
}

onScroll

A handler for the scroll event.

Type: function
Function parameters:
e: Object
Provides function parameters.
Object structure:
component: Object
Provides access to the widget instance.
element: jQuery
An HTML element of the widget.
model: Object
Provides access to the data that is available for binding against the element.
jQueryEvent: jQuery.Event
Returns a jQuery event that caused action execution.
scrollOffset: Object
Returns the current scroll offset in the following format: { top: topOffset, left: leftOffset }.
reachedLeft: Boolean
Indicates whether the container's left boundary is reached.
reachedRight: Boolean
Indicates whether the container's right boundary is reached.
reachedTop: Boolean
Indicates whether the container's top boundary is reached.
reachedBottom: Boolean
Indicates whether the container's bottom boundary is reached.
Default Value: null

Assign a function to perform a custom action on each scroll gesture.

Show Example:
AngularJS
Knockout
jQuery
<div ng-controller="demoController" style="height:100%;">
    <div id="myScrollView" dx-scroll-view="{
        onScroll: scrolled
    }">
        <div id="textContainer"><p>Scroll the text</p></div>
    </div>
</div>
$.ajax({
    type: "POST",
    url: "/LoremService.asmx/LoremIpsum",
    data: JSON.stringify({ count: 5 }),
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: function (data) {
        $.each(data.d, function (index, value) {
            $("#textContainer").append("<p>" + value + "</p>");
        });
    }
});
var myApp = angular.module('myApp', ['dx']);
myApp.controller("demoController", function ($scope) {
    $scope.scrolled = function () {
        DevExpress.ui.notify("Scrolling is performed", "success");
    };
});
angular.element(document).ready(function () {
    angular.bootstrap(document, ['myApp']);
});
p{
    padding: 5px 10px;
    margin: 0;
}
.content{
    height: 100%;
}
#textContainer p:first-child{
    font-size: large;
    margin-top: 10px;
    color: red;
    text-align: center;
}
#myScrollView{
    margin: 10px;
}
<div id="myScrollView" data-bind="dxScrollView: {
    onScroll: scrolled
}">
    <div id="textContainer"><p>Scroll the text</p></div>
</div>
$.ajax({
    type: "POST",
    url: "/LoremService.asmx/LoremIpsum",
    data: JSON.stringify({ count: 5 }),
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: function (data) {
        $.each(data.d, function (index, value) {
            $("#textContainer").append("<p>" + value + "</p>");
        });
    }
});
var myViewModel = {
    scrolled: function () {
        DevExpress.ui.notify("Scrolling is performed", "success");
    }
}
ko.applyBindings(myViewModel);
p{
    padding: 5px 10px;
    margin: 0;
}
.content{
    height: 100%;
}
#textContainer p:first-child{
    font-size: large;
    margin-top: 10px;
    color: red;
    text-align: center;
}
#myScrollView{
    margin: 10px;
}
<div id="myScrollView">
    <div id="textContainer"><p>Scroll the text</p></div>
</div>
$.ajax({
    type: "POST",
    url: "/LoremService.asmx/LoremIpsum",
    data: JSON.stringify({ count: 5 }),
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: function (data) {
        $.each(data.d, function (index, value) {
            $("#textContainer").append("<p>" + value + "</p>");
        });
    }
});
$("#myScrollView").dxScrollView({
    onScroll: function () {
        DevExpress.ui.notify("Scrolling is performed", "success");
    }
});
p{
    padding: 5px 10px;
    margin: 0;
}
.content{
    height: 100%;
}
#textContainer p:first-child{
    font-size: large;
    margin-top: 10px;
    color: red;
    text-align: center;
}
#myScrollView{
    margin: 10px;
}

onUpdated

A handler for the updated event.

Type: function
Function parameters:
e: Object
Provides function parameters.
Object structure:
component: Object
Provides access to the widget instance.
element: jQuery
An HTML element of the widget.
model: Object
Provides access to the data that is available for binding against the element.
jQueryEvent: jQuery.Event
Returns a jQuery event that caused the action execution.
scrollOffset: Object
Returns the current scroll offset in the following format: { top: topOffset, left: leftOffset }.
reachedLeft: Boolean
Indicates whether the container's left boundary is reached.
reachedRight: Boolean
Indicates whether the container's right boundary is reached.
reachedTop: Boolean
Indicates whether the container's top boundary is reached.
reachedBottom: Boolean
Indicates whether the container's bottom boundary is reached.
Default Value: null

Assign a function to perform a custom action after the widget is updated.

Show Example:
AngularJS
Knockout
jQuery
<div ng-controller="demoController" style="height:100%;">
    <div id="myScrollView" dx-scroll-view="{
        onUpdated: updated
    }">
        <div id="textContainer"><p>Scroll the text</p></div>
    </div>
</div>
$.ajax({
    type: "POST",
    url: "/LoremService.asmx/LoremIpsum",
    data: JSON.stringify({ count: 15 }),
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: function (data) {
        $.each(data.d, function (index, value) {
            $("#textContainer").append("<p>" + value + "</p>");
        });
    }
});
var myApp = angular.module('myApp', ['dx']);
myApp.controller("demoController", function ($scope) {
    $scope.updated = function (e) {
        DevExpress.ui.notify("The widget has been updated", "success");
    };
});
angular.element(document).ready(function () {
    angular.bootstrap(document, ['myApp']);
});
p{
    padding: 5px 10px;
    margin: 0;
}
.content{
    height: 100%;
}
#textContainer p:first-child{
    font-size: large;
    margin-top: 10px;
    color: red;
    text-align: center;
}
#myScrollView{
    margin: 10px;
}
<div id="myScrollView" data-bind="dxScrollView: {
    onUpdated: updated
}">
    <div id="textContainer"><p>Scroll the text</p></div>
</div>
$.ajax({
    type: "POST",
    url: "/LoremService.asmx/LoremIpsum",
    data: JSON.stringify({ count: 15 }),
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: function (data) {
        $.each(data.d, function (index, value) {
            $("#textContainer").append("<p>" + value + "</p>");
        });
    }
});
var myViewModel = {
    updated: function (e) {
        DevExpress.ui.notify("The widget has been updated", "success");
    }
}
ko.applyBindings(myViewModel);
p{
    padding: 5px 10px;
    margin: 0;
}
.content{
    height: 100%;
}
#textContainer p:first-child{
    font-size: large;
    margin-top: 10px;
    color: red;
    text-align: center;
}
#myScrollView{
    margin: 10px;
}
<div id="myScrollView">
    <div id="textContainer"><p>Scroll the text</p></div>
</div>
$.ajax({
    type: "POST",
    url: "/LoremService.asmx/LoremIpsum",
    data: JSON.stringify({ count: 15 }),
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: function (data) {
        $.each(data.d, function (index, value) {
            $("#textContainer").append("<p>" + value + "</p>");
        });
    }
});
$("#myScrollView").dxScrollView({
    onUpdated: function (e) {
        DevExpress.ui.notify("The widget has been updated", "success");
    }
});
p{
    padding: 5px 10px;
    margin: 0;
}
.content{
    height: 100%;
}
#textContainer p:first-child{
    font-size: large;
    margin-top: 10px;
    color: red;
    text-align: center;
}
#myScrollView{
    margin: 10px;
}

pullDownAction

Deprecated

Use the onPullDown option instead.

pulledDownText

Specifies the text shown in the pullDown panel when pulling the content down lowers the refresh threshold.

Type: String
Default Value: "Release to refresh..."

pullingDownText

Specifies the text shown in the pullDown panel while pulling the content down to the refresh threshold.

Type: String
Default Value: "Pull down to refresh..."

reachBottomAction

Deprecated

Use the onReachBottom option instead.

reachBottomText

Specifies the text shown in the pullDown panel displayed when content is scrolled to the bottom.

Type: String
Default Value: "Loading..."

refreshingText

Specifies the text shown in the pullDown panel displayed when the content is being refreshed.

Type: String
Default Value: "Refreshing..."

rtlEnabled

Specifies whether or not the current component supports a right-to-left representation.

Type: Boolean
Default Value: false

If you need to switch the display of this DevExtreme component to right-to-left, enable a specifically designed configuration option - rtlEnabled. When this option is set to true, the text flows from right to left, and the layout the component's elements is reversed. To switch the entire application/site to a right-to-left representation, use the static DevExpress.rtlEnabled field.

scrollAction

Deprecated

Use the onScroll option instead.

scrollByContent

A Boolean value specifying whether or not an end-user can scroll the widget content swiping it up or down.

Type: Boolean
Default Value: true
Default for desktop: DX.support.touch

scrollByThumb

A Boolean value specifying whether or not an end-user can scroll the widget content using the scrollbar.

Type: Boolean
Default Value: false
Default for desktop: true

showScrollbar

Specifies when the widget shows the scrollbar.

Type: String
Default Value: 'onScroll'
Default for desktop: "onHover"
Accepted Values: 'onScroll'|'onHover'|'always'|'never'

Setting this option makes sense only when the useNative option is set to false.

Show Example:
AngularJS
Knockout
jQuery
<div ng-controller="demoController" style="height:100%;">
    <div id="myScrollView" dx-scroll-view="{
        useNative: false,
        bindingOptions: {
            showScrollbar: 'showScrollbarMode'
        }
    }">
        <div id="textContainer"></div>
    </div>
    <div class="dx-fieldset">
        <div class="dx-field">
            <div class="dx-field-label">showScrollbar</div>
            <div class="dx-field-value" dx-select-box="{ 
                items: showScrollbarModes,
                bindingOptions: {
                    value: 'showScrollbarMode'
                }
            }"></div>
        </div>
    </div>
</div>
$.ajax({
    type: "POST",
    url: "/LoremService.asmx/LoremIpsum",
    data: JSON.stringify({ count: Math.ceil(Math.random() * 30) }),
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: function (data) {
        $.each(data.d, function (index, value) {
            $("#textContainer").append("<p>" + value + "</p>");
        });
    }
});
var myApp = angular.module('myApp', ['dx']);
myApp.controller("demoController", function ($scope) {
    $scope.showScrollbarModes = ["onScroll", "onHover", "always", "never"];
    $scope.showScrollbarMode = "onScroll";
});
angular.element(document).ready(function () {
    angular.bootstrap(document, ['myApp']);
});
p{
    padding: 5px 10px;
    margin: 0;
}
.content{
    height: 100%;
}
#myScrollView{
    margin: 10px;
    height: 70%;
}
<div id="myScrollView" data-bind="dxScrollView: {
    showScrollbar: showScrollbarMode,
    useNative: false
}">
    <div id="textContainer"></div>
</div>
<div class="dx-fieldset">
    <div class="dx-field">
        <div class="dx-field-label">showScrollbar</div>
        <div class="dx-field-value" data-bind="dxSelectBox: { 
            items: showScrollbarModes,
            value: showScrollbarMode
        }"></div>
    </div>
</div>
$.ajax({
    type: "POST",
    url: "/LoremService.asmx/LoremIpsum",
    data: JSON.stringify({ count: Math.ceil(Math.random() * 30) }),
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: function (data) {
        $.each(data.d, function (index, value) {
            $("#textContainer").append("<p>" + value + "</p>");
        });
    }
});
var myViewModel = {
    showScrollbarModes: ["onScroll", "onHover", "always", "never"],
    showScrollbarMode: ko.observable("onScroll")
}
ko.applyBindings(myViewModel);
p{
    padding: 5px 10px;
    margin: 0;
}
.content{
    height: 100%;
}
#myScrollView{
    margin: 10px;
    height: 70%;
}
<div id="myScrollView">
    <div id="textContainer"></div>
</div>
<div class="dx-fieldset">
    <div class="dx-field">
        <div class="dx-field-label">showScrollbar</div>
        <div class="dx-field-value" id="showModeSelector"></div>
    </div>
</div>
$.ajax({
    type: "POST",
    url: "/LoremService.asmx/LoremIpsum",
    data: JSON.stringify({ count: Math.ceil(Math.random() * 30) }),
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: function (data) {
        $.each(data.d, function (index, value) {
            $("#textContainer").append("<p>" + value + "</p>");
        });
    }
});
$("#myScrollView").dxScrollView({
    showScrollbar: "onScroll",
    useNative: false
});
$("#showModeSelector").dxSelectBox({
    items: ["onScroll", "onHover", "always", "never"],
    value: "onScroll",
    onValueChanged: function (e) {
        $("#myScrollView").dxScrollView("instance").option("showScrollbar", e.value);
    }
});
p{
    padding: 5px 10px;
    margin: 0;
}
.content{
    height: 100%;
}
#myScrollView{
    margin: 10px;
    height: 70%;
}

updateAction

Deprecated

Use the onUpdated option instead.

useNative

Indicates whether to use native or simulated scrolling.

Type: Boolean
Default Value: true
Default for android below version 4: false
Default for tizen: false
Default for desktop: false
Default for mac desktop: true