My customer has an obnoxiously wide grid (~200 columns) which introduces the need to allow them to pick a Grid Column Title from a droplist (of all column titles) so that we can auto scroll the select grid into view. I have tried to follow several other examples like this
https://docs.telerik.com/kendo-ui/knowledge-base/grid-scroll-to-last-column
but the offset() and .let seem to now work for core.
This is the closest that I have found but I cannot get it to work, either
Thanks!
Sample Code
<button onclick="jumpToColumn();">Jump</button>
<input type="text" id="jumpToColumnName" name="jumpToColumnName">
<br>
<br>
@(Html.Kendo().Grid<OrderViewModel>
().Name("grid")
.Groupable()
.Sortable()
.Editable()
.Scrollable()
.ToolBar(x => x.Create())
.Columns(columns =>
{
columns.Bound(column => column.Freight);
columns.Bound(column => column.ShipName);
columns.Bound(column => column.ShipCity);
columns.Template("1").Title("Sh1").Width(200);
columns.Template("2").Title("Sh2").Width(200);
columns.Template("3").Title("Sh3").Width(200);
columns.Template("4").Title("Sh4").Width(200);
columns.Template("5").Title("Sh5").Width(200);
columns.Template("6").Title("Sh6").Width(200);
columns.Template("7").Title("Sh7").Width(200);
columns.Template("8").Title("Sh8").Width(200);
columns.Template("9").Title("Sh9").Width(200);
columns.Template("10").Title("Sh10").Width(200);
columns.Template("11").Title("Sh11").Width(200);
columns.Template("12").Title("Sh12").Width(200);
columns.Template("13").Title("Sh13").Width(200);
columns.Template("14").Title("Sh14").Width(200);
columns.Template("15").Title("Sh15").Width(200);
columns.Template("16").Title("Sh16").Width(200);
columns.Template("17").Title("Sh17").Width(200);
columns.Template("18").Title("Sh18").Width(200);
columns.Template("19").Title("Sh19").Width(200);
columns.Template("20").Title("Sh20").Width(200);
columns.Template("21").Title("Sh21").Width(200);
columns.Template("22").Title("Sh22").Width(200);
columns.Template("23").Title("Sh23").Width(200);
columns.Command(column =>
{
column.Edit();
column.Destroy();
}).Width(230);
})
.DataSource(ds => ds.Ajax()
.Read(r => r.Url("/Index?handler=Read").Data("forgeryToken"))
.Update(u => u.Url("/Index?handler=Update").Data("forgeryToken"))
.Create(c => c.Url("/Index?handler=Create").Data("forgeryToken"))
.Destroy(d => d.Url("/Index?handler=Destroy").Data("forgeryToken"))
.Model(m => m.Id(id => id.OrderID))
.PageSize(10)
)
.Pageable()
.Selectable()
)
<script type="text/javascript">
function jumpToColumn() {
let columnTitle = 'sh11'; //$("#jumpToColumnName").val();
var grid = $("#grid").data().kendoGrid;
let headerColumnTitleSelector = "th[data-field='" + columnTitle + "']"; //"th[data-title='" + columnTitle + "']";
let column = $(headerColumnTitleSelector);
let columnOffset = column.offset(); // returns undefined
let lastColumnOffset = columnOffset.left; // exception because of the previous line
// This scrolls the scrollbar but does NOT scroll the content
grid.content.scrollLeft(lastColumnOffset);
}
</script>