New to Telerik UI for ASP.NET CoreStart a free 30-day trial

TileLayout Reordering

Updated on Dec 10, 2025

The Telerik UI TileLayout for ASP.NET Core 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 Core 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.

Razor
     @(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 .

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.

Razor
     @(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.

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

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

See Also