8 Answers, 1 is accepted
0
Łukasz
Top achievements
Rank 1
answered on 16 May 2012, 10:15 PM
Anyone?
0
Hi Lukasz,
I am not sure if I understood your case correctly. Could you please clarify your question or give an example?
Do you want to automatically select a row (in a navigable grid) after navigating with the arrow keyboard keys? If that is the case, I am afraid that this behaviour is not supported - by default you need to press the space bar to select the current cell/row.
Please let me know if I missed something.
Kind regards,
Alexander Valchev
the Telerik team
I am not sure if I understood your case correctly. Could you please clarify your question or give an example?
Do you want to automatically select a row (in a navigable grid) after navigating with the arrow keyboard keys? If that is the case, I am afraid that this behaviour is not supported - by default you need to press the space bar to select the current cell/row.
Please let me know if I missed something.
Kind regards,
Alexander Valchev
the Telerik team
Join us on our journey to create the world's most complete HTML 5 UI Framework - download Kendo UI now!
0
Łukasz
Top achievements
Rank 1
answered on 17 May 2012, 06:45 PM
Yes, exactly what I wanted.
In a navigatable grid with row selection mode I want to avoid hit spacebar after every hit of arrow (up or down).
If this is not supported yet then maybe is planned?
In a navigatable grid with row selection mode I want to avoid hit spacebar after every hit of arrow (up or down).
If this is not supported yet then maybe is planned?
0
Hello Lukasz,
I am afraid that this functionality is not planned, but I will forward the idea to the developers for further consideration. Meanwhile you could find an information about the upcoming updates and our future plans in the official roadmap.
Kind regards,
Alexander Valchev
the Telerik team
I am afraid that this functionality is not planned, but I will forward the idea to the developers for further consideration. Meanwhile you could find an information about the upcoming updates and our future plans in the official roadmap.
Kind regards,
Alexander Valchev
the Telerik team
Join us on our journey to create the world's most complete HTML 5 UI Framework - download Kendo UI now!
0
Alexander
Top achievements
Rank 1
answered on 19 Jul 2012, 09:05 AM
Hi,
I'd like to add my voice to that feature request. The by cell only navigation and the lack of automatic row selection seem, to me, to make keyboard navigation useless except in the very specific case where every cell is editable and a lot of editing is taking place.
Thanks
Alexander
I'd like to add my voice to that feature request. The by cell only navigation and the lack of automatic row selection seem, to me, to make keyboard navigation useless except in the very specific case where every cell is editable and a lot of editing is taking place.
Thanks
Alexander
0
Dan
Top achievements
Rank 1
answered on 18 Aug 2012, 05:17 PM
Here's some javascript to do it.
This is with:
selectable: true,
navigatable: false
This is with:
selectable: true,
navigatable: false
var target = $('.k-grid-content'); //give it a tabindex so it can get focus and accept key input. target.attr("tabindex", 0); target.keydown(function (ke) { var kGrid, curRow, newRow; kGrid = $(this).closest('.k-grid').data("kendoGrid"); //get currently selected row curRow = kGrid.select(); //abort if no row selected if (!curRow.length) return; //get newRow up or down. if (ke.which == 38) { newRow = curRow.prev(); } else if (ke.which == 40) { newRow = curRow.next(); } else { return; } //Top or Bottom exceeded, abort. if (!newRow.length) return; //Select new row kGrid.select(newRow);0
Rikin Patel
Top achievements
Rank 1
answered on 25 Oct 2012, 05:22 AM
this is working fine for row selection by up and down key but when i press down key of last row of grid then next row selected but selected row is not visible to user i.e no scroll down for next row selected if that row is not visible to user.
how can do this things help me....
how can do this things help me....
0
Dan
Top achievements
Rank 1
answered on 26 Oct 2012, 08:40 PM
//This is a helper class that mostly just makes the telerik grid more keyboard friendly.var kendoGridHelper = {};kendoGridHelper.init = function (o) { /// <summary> ///Binds onSelect, keyboard navi, and databound row resselect ///Returns nothing. /// </summary> /// <param name="o" type="Dictionary"> /// grid: html grid, onSelect, onDblClick /// </param> var grid = o.grid; var onSelect = o.onSelect; var onDblClick = o.onDblClick; var kGrid = grid.data('kendoGrid'); //give rows tabindex, reselect row kGrid.bind('dataBound', function (e) { kendoGridHelper.onDataBound({ grid: grid, onSelect: onSelect }); }); //bind arrows to navigate kendoGridHelper.bindNavigatable({ grid: grid }); //bind change event kendoGridHelper.bindChange({ grid: grid, onSelect: onSelect }); //bind dblclick if (onDblClick != undefined) { $('.k-grid-content tr', grid) .live('dblclick', function (e) { //bind row dblclick var id = grid.data('kendoGrid').dataItem(e.currentTarget).id; onDblClick(id); }); }};kendoGridHelper.bindNavigatable = function (o) { var grid = o.grid; var target = $('.k-grid-content', grid); //give it a tabindex so it can get focus and accept key input. target.attr("tabindex", 0); //Detecting when the scrollbar is clicked to prevent the focus event from firing and scrolling back up/down. target.mousedown(function (e) { var innerWidth = target.find('table').first().width(); if (e.offsetX > innerWidth) e.preventDefault(); }); //This allows a diff background color for a selected row based on whether the grid has focus or not. target.focus(function (e) { var selRow = grid.find('.k-state-selected'); if (selRow.length) { selRow.focus(); } }); target.keydown(function (ke) { //override scroll bar so arrows will navigate rows without scrolling. ke.preventDefault(); var kGrid, curRow, newRow; kGrid = $(this).closest('.k-grid').data("kendoGrid"); //get currently selected row curRow = kGrid.select(); //abort if no row selected if (!curRow.length) return; //get newRow up or down. if (ke.which == 38) { newRow = curRow.prev(); } else if (ke.which == 40) { newRow = curRow.next(); } else { return; } //Top or Bottom exceeded, abort. if (!newRow.length) return; //Select new row kGrid.select(newRow); // newRow.focus(); });};kendoGridHelper.bindChange = function (o) { var grid = o.grid; var onSelect = o.onSelect; var kGrid = grid.data('kendoGrid'); kGrid.bind('change', function (e) { //This fixes the problem of losing focus on auto-refresh if (document.activeElement == document.body) kGrid.select().focus(); //When using Kendo grid mvc wrapper, the datasource is not set, so accessing dataItem will fail. if (!kGrid.dataSource.data().length) return; //Set grid.selectedId, and execute onSelect var selectedId = kGrid.dataItem(kGrid.select()).id; if (selectedId != kGrid.selectedId && onSelect != undefined) { kGrid.selectedId = selectedId; onSelect(selectedId); } else { kGrid.selectedId = selectedId; } });};//Mostly this function just takes care of reselecting the global kGrid.selectedId. //Before I tried to not use a global, and call refresh with an id, but the problem is that//other things call a data fetch like sorting, paging, manual refresh, and I have no way of sending the id with them.//So a global flag, autoRefresh is used to denote when to call the onSelect method or not. Calling onSelect while //in autoRefresh mode would be bad since it would interrupt other UI stuff going on.kendoGridHelper.onDataBound = function (o) { /// <summary> ///Binds databound row resselect ///Returns nothing. /// </summary> /// <param name="o" type="Dictionary"> /// grid: html grid, onSelect /// </param> var grid = o.grid; var onSelect = o.onSelect; var kGrid = grid.data('kendoGrid'); //give rows a tabindex so focus will work kGrid.content.find('tr').attr('tabindex', 0); //Reselect saved row by grid.selectedId if (kGrid.selectedId != undefined) { var dataRow = kGrid.dataSource.get(kGrid.selectedId); if (dataRow != undefined) { var row = kGrid.table.find("tr[data-uid='" + dataRow.uid + "']"); if (row.length) { kGrid.select(row); //call onSelect method since change event will ignore it since the selectedId has not changed. if (!kGrid.autoRefresh && onSelect != undefined) onSelect(kGrid.selectedId); } } } //select first row if nothing else selected if (!kGrid.select().length && kGrid.table.find('tr').length) { kGrid.select(kGrid.table.find('tr').first()); } kGrid.autoRefresh = false;};