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.
}