The Telerik MVC Grid is quite a cool component. Nevertheless, some client-side API functions are desperately missing. For example, you cannot select or deselect rows by code. Also, there’s no way to do client-side-filtering (i.e. hide rows based on values withoud re-populating the whole grid). So here is a set of some functions that were helpful to me – suite yourselves…

01.``//

02.``// In a hierarchical grid, the function returns the parent row of the specified child row.

03.``//

04.``function getParentRow(row) {

05.`` ``var l = $(row).parents(``'.t-detail-row'``).prev();

06.`` ``return l.length == 0 ? ``null : l[0];

07.``}

08.

09.``//

10.``// In a hierarchical grid, the function returns the child grid of the specified parent row.

11.``//

12.``function getChildGrid(row) {

13.`` ``var nextRow = $(row).next();

14.`` ``return nextRow.hasClass(``'t-detail-row'``) ? $(``'.t-grid'``, nextRow).data(``'tGrid'``) : ``null``;

15.``}

16.

17.``//

18.``// Selects the specified row. The row will be highlighted and the onRowSelect event handler will be called.

19.``//

20.``function selectRow(row) {

21.`` ``var $row = $(row);

22.`` ``$row.addClass(``'t-state-selected'``);

23.`` ``var grid = $row.parents(``'.t-grid'``).data(``'tGrid'``);

24.`` ``if``(grid.onRowSelect) grid.onRowSelect({ row: row });

25.``}

26.

27.``//

28.``// Unselects all rows in the specified grid.

29.``//

30.``function unselectRows(grid) {

31.`` ``$(grid.$rows()).removeClass(``'t-state-selected'``);

32.``}

33.

34.``//

35.``// Unselects the specified row.

36.``//

37.``function unselectRow(row) {

38.`` ``$(row).removeClass(``'t-state-selected'``);

39.``}

40.

41.``//

42.``// Hides all rows in the specified grid that have a data member that equals teh specified value.

43.``// If the data member is omitted, all rows get shown again.

44.``//

45.``function filterWhenEquals(grid, dataMember, value) {

46.`` ``var columnIndex = -1;

47.

48.`` ``if (dataMember) {

49.`` ``$.each(grid.columns, ``function (i, c) {

50.`` ``if (c.member == dataMember) {

51.`` ``columnIndex = i;

52.`` ``}

53.`` ``});

54.`` ``}

55.

56.`` ``if (columnIndex >= 0) {

57.`` ``grid.$rows().each(``function (i, r) {

58.`` ``if ($($(``'td'``, r)[columnIndex]).html() != value) {

59.`` ``$(r).hide();

60.`` ``}

61.`` ``else {

62.`` ``$(r).show();

63.`` ``}

64.`` ``});

65.`` ``}

66.`` ``else { $(grid.$rows()).show(); }

67.``}