Почему бы не привязать jqGrid к объекту данных, найденному в функции обратного вызова источника автозаполнения. Ниже у меня есть текстовое поле для поиска пользователей. Это делает ajax-вызов wervice WCF под названием SearchUsers. После успешного вызова ajax вызывается «функция (данные) ....», а «данные» - это возвращаемые данные.
//create the userlistautocomplete
$("#txtSearchUsers").autocomplete({
source: function (request, response) {
SecurityAjax.SearchUsers(request.term, function (data) {
$("#usersList").jqGrid('clearGridData');
gridData = data;
$("#usersList").setGridParam({ data: gridData });
$("#usersList").trigger("reloadGrid");
});
},
minLength: 2,
open: function () {
$(this).removeClass("ui-corner-all").addClass("ui-corner-top");
},
close: function () {
$(this).removeClass("ui-corner-top").addClass("ui-corner-all");
}
}).data("autocomplete")._renderItem = function (ul, item) {
return $("<li></li>").data("item.autocomplete", item).append("<a>" + item.FirstName + "<br>" + item.LastName + "</a>").appendTo(ul);
};
В анонимной функции "function (data)" я устанавливаю данные моего существующего jqGrid на автозаполнение данных, а затем обновляю сетку, где моя сетка определяется следующим образом:
$("#usersList").jqGrid({
data: gridData,
width: 800,
datatype: "local",
colNames: ['User Id', "First Name", "Last name", "User name"],
colModel: [
{ name: 'SysUserId', index: 'SysUserId', width: 55, hidden: true },
{ name: 'FirstName', index: 'FirstName', width: 100, editable: true },
{ name: 'LastName', index: 'LastName', width: 90, editable: true },
{ name: 'UserName', index: 'UserName', width: 90, editable: true }
],
caption: "Using events example",
onSelectRow: function (id) {
if (id && id !== lastsel) {
lastsel = id;
}
},
ondblClickRow: function (id) {
},
localReader: {
repeatitems: false,
id: "UserId"
},
pager: '#pusersList'
});