Вы можете найти jqGrids, существующие на странице, разными способами.Например, вы можете использовать $('table.ui-jqgrid-btable')
вместо $('div.ui-jqgrid-bdiv table')
.Кроме того, вы не должны забывать, что это может быть больше, чем один jqGrid на странице в целом.Я рекомендую вам написать свой код, чтобы он работал со многими jqGrids страницы, даже если вы в настоящее время используете только один jqGrid на страницу.
Если вы обнаружите каким-либо образом элемент table
в jqGrid, вы можетеполучить элемент DOM первой найденной сетки с jqGrids[0]
.jqGrid использует некоторые расширители DOM.Это добавляет дополнительные свойства grid
и p
.В каждом методе jqGrid проверяется, инициализирована ли сетка, проверяя, существует ли свойство grid
.Свойство p
дает вам все параметры jqGrid включительно p.pager
.На сетке можно создать до двух пейджеров: один на верхнем краю сетки, а другой внизу (для получения дополнительной информации см. this ).Таким образом, необходимый код может выглядеть следующим образом:
var jqGrids = $('table.ui-jqgrid-btable');
if (jqGrid.length > 0) {
jqGrid.each(function(i) {
if (this.grid) {
// one more test for the jqGrid
// jqGrid[i] is a jqGrid
if (this.p.toppager) {
// this.id + '_toppager' is the id of the top pager
}
if (this.p.pager) {
// this.p.pager is the id of the bottom pager
}
}
});
}
Чтобы проверить, имеет ли элемент table
некоторый класс customclass
, вы можете использовать jQuery.hasClass .
ОБНОВЛЕНО : В комментарии вы спросили меня, как скрыть или показать кнопки на панели навигации динамически.Я подготовил демонстрационную версию , которая демонстрирует это:
Если вы отметите кнопки, расположенные над сеткой, соответствующая кнопка на панели навигатора будет скрыта,Снятие отметки покажет соответствующую кнопку назад.
Код просто позвоните $('#add_list').hide()
или $('#add_list').show()
, чтобы скрыть / показать кнопку «Добавить».В этом примере последняя часть id = "add_list" - это идентификатор элемента <table>
, используемого для создания сетки.Другие стандартные кнопки имеют идентификаторы, начинающиеся со следующих префиксов: 'edit_'
, 'view_'
, 'del_'
, 'search_'
, 'refresh_'
.Более распространенный код, который работает, если идентификатор сетки содержит специальные символы, выглядит следующим образом:
var grid = $("#list"),
gid = $.jgrid.jqID(grid[0].id);
$('#cbAdd').change(function () {
var $td = $('#add_' + gid);
if ($(this).is(':checked')) {
$td.hide();
} else {
$td.show();
}
});
Чтобы найти пользовательские кнопки навигатора, добавленные с помощью navButtonAdd Я использую атрибут title
:
$('#cbChooseColumns').change(function () {
var $td = $(grid[0].p.pager + '_left ' + 'td[title="choose columns"]');
if ($(this).is(':checked')) {
$td.hide();
} else {
$td.show();
}
});