Чтобы нарисовать сетку на DOM готовой, но заполнить ее позже, вы можете инициализировать сетку, используя локальное хранилище данных:
datatype: "local"
Затем, когда вы выберете правильную вкладку, инициируйте запрос AJAX, чтобы получить ваши данные. Когда данные получены, вы можете сделать это, чтобы загрузить их в сетку:
// Populate grid data
jQuery("#myGrid").clearGridData();
if (data != null){
for(var i=0;i<data.length;i++){
jQuery("#myGrid").addRowData(data[i].id, data[i]);
}
}
}
Относительно дублирования кнопок после многократного выбора вкладки. Я видел это раньше, когда инициализировал jqGrid несколько раз (т.е. IE вызывает .jqGrid каждый раз, когда выбирается вкладка). Вы не должны видеть это после выполнения вышеуказанных шагов. В противном случае, один из способов предотвратить это - отслеживать, когда инициализируется сетка, и инициализировать сетку можно только при первом выборе соответствующей вкладки:
var initialized = false;
jQuery('#tabs').tabs({
show: function(event, ui) {
if (ui.index == 1 && !initialized){
initialized = true;
(... create your grid here ...)
}
}
});