New to Telerik UI for ASP.NET MVC? Download free 30-day trial

TileLayout Reordering

The Telerik UI TileLayout for ASP.NET MVC allows you to rearrange the position of the tile containers either with drag and drop or click-move-click.

The reordering takes advantage of the CSS Grid mechanism and changes the css order of the item and lets the browser handle the rest.

Enabling the Click-Move-Click Functionality

As of Telerik UI for ASP.NET MVC R2 SP1 2023, users can reorder the TileLayout's containers by using the click-move-click functionality provided by the Reorderable.ClickMoveClick() option. Users can click a container to start moving it, and then click again to place it in its new position.

     @(Html.Kendo().TileLayout()
        .Name("tilelayout")
        .Columns(2)
        .RowsHeight("285px")
        .ColumnsWidth("285px")
        .Containers(c => {
            c.Add().Header(h => h.Text("Item one")).BodyTemplate("Item one body").ColSpan(1).RowSpan(1);
            c.Add().Header(h => h.Text("Item two")).BodyTemplate("Item two body").ColSpan(1).RowSpan(1);
            c.Add().Header(h => h.Text("Item three")).BodyTemplate("Item three body").ColSpan(1).RowSpan(1);
        })
        .Reorderable(reorderable=>reorderable.ClickMoveClick(true))
    )

Enabling the Drag and Drop Functionality

To enable the reorderable feature of the TileLayout, set the Reorderable() method and pass true as a parameter.

To use the Reorderable() functionality, define headers.

The example below will render a grid with two columns which can be reordered both vertically and horizontally.

     @(Html.Kendo().TileLayout()
        .Name("tilelayout")
        .Columns(2)
        .RowsHeight("285px")
        .ColumnsWidth("285px")
        .Containers(c => {
            c.Add().Header(h => h.Text("Item one")).BodyTemplate("Item one body").ColSpan(1).RowSpan(1);
            c.Add().Header(h => h.Text("Item two")).BodyTemplate("Item two body").ColSpan(1).RowSpan(1);
            c.Add().Header(h => h.Text("Item three")).BodyTemplate("Item three body").ColSpan(1).RowSpan(1);
        })
        .Reorderable(true)
    )

Event Handling

The widget triggers a Reorder() event which provides access to the reordered container, the old and the new index.

    .Events(e=>e.Reorder("onReorder"))

    function onReorder (e) {
        console.log(e.newIndex, e.oldIndex);
    }

See Also

In this article