У меня есть страница с двумя jqGrids на ней в разных элементах. Когда я впервые загружаю страницу, Firebug сообщает о вызове ajax, чтобы получить первые 15 строк, как ожидалось, и пейджер точно показывает количество страниц и количество записей. Однако, когда я нажимаю стрелки на пейджере, в Firebug не прослеживается вызов ajax, поэтому я уверен, что что-то неправильно подключено. Странно, что у меня есть другие страницы с только одним jqGrid и пейджинговыми работами, как и ожидалось. У меня есть точки останова в мой контроллер (MVC4) и начальная нагрузка попадает им просто отлично и все аргументы являются правильными:jqGrid Paging - no ajax call to get next page
#region GetUnManagedMerchants
public JsonResult GetUnManagedMerchants(string id, string sidx, string sord, int page, int rows)
{
return GetSomeMerchants(id, false, sidx, sord, page, rows);
}
#endregion
Вот мой код сценария:
$(document).ready(function() {
jQuery("#grdUnManaged").jqGrid({
url: '/Ajax/GetUnManagedMerchants/' + $('#UserInContext_UserId').val(),
datatype: 'json',
mType: 'GET',
colNames: ['', 'UnManaged Merchant', ''],
colModel: [
{ name: 'Manage', key: true, index: 'manage', width: 20, sortable: false, formatter: function() { return '<img src="@Url.Content("~/content/images/icons/merchant.png")" width="16" height="16" alt="Merchants" />'; } },
{ name: 'Name', index: 'name', width: 325 },
{ name: 'id', index: 'id', width: 0, hidden: true , key: true}
],
pager: '#grdUnManagedPager',
rowNum: 15,
width: 450,
height: 300,
viewrecords: true,
caption: 'Current UnManaged Merchants',
beforeSelectRow: function (rowid, e) {
var iCol = $.jgrid.getCellIndex(e.target);
if (iCol == 0) {
var merchantId = jQuery(this).getRowData(rowid)['id'];
var userId = $('#UserInContext_UserId').val();
ManageMerchant(userId, merchantId);
return true;
}
return false;
}
});
jQuery("#grdUnManaged").jqGrid('navGrid', '#grdUnManagedPager', { add: false, edit: false, del: false, search: false, refresh: true });
});
Пожалуйста, помогите мне с тем, что пропал, отсутствует! Это последний элемент, который мне нужно исправить до завершения этого проекта.
Спасибо!
Я внес изменения, которые вы предлагаете (спасибо), но я все еще НЕ получаю обратный вызов ajax, когда я нажимаю на пейджер, чтобы увидеть следующую страницу. Я переписываю весь свой сценарий с помощью обеих сеток.
<script type="text/javascript">
var buttonNames = {};
buttonNames[0] = 'Manage';
$(document).ready(function() {
jQuery('#currentUserHeader').html('<h3>Merchant Lists for ' + $('#UserInContext_Email').val() + '.</h3>');
jQuery("#grdManaged").jqGrid({
url: '/Ajax/GetManagedMerchants/' + $('#UserInContext_UserId').val(),
datatype: 'json',
mType: 'GET',
colNames: ['', 'Managed Merchant', ''],
colModel: [
{ name: 'Manage', index: 'Manage', width: 20, sortable: false, formatter: function() { return '<img src="@Url.Content("~/content/images/chevron.png")" width="16" height="16" alt="Merchants" />'; } },
{ name: 'Name', index: 'Name', width: 325 },
{ name: 'id', index: 'id', width: 0, hidden: true, key: true }
],
pager: '#grdManagedPager',
rowNum: 15,
width: 450,
height: 300,
viewrecords: true,
caption: 'Current Managed Merchants',
beforeRequest: function() {
var getUrl = '/Ajax/GetManagedMerchants/' + $('#UserInContext_UserId').val();
$('#grdManaged').setGridParam([{ url: getUrl }]);
},
beforeSelectRow: function (rowid, e) {
var iCol = $.jgrid.getCellIndex(e.target);
if (iCol == 0) {
var merchantId = jQuery(this).getRowData(rowid)['id'];
var userId = $('#UserInContext_UserId').val();
UnManageMerchant(userId, merchantId);
return true;
}
return false;
}
});
jQuery("#grdManaged").jqGrid('navGrid', '#grdManagedPager', { add: false, edit: false, del: false, search: false, refresh: true });
});
</script>
<script type="text/javascript">
$(document).ready(function() {
jQuery("#grdUnManaged").jqGrid({
url: '/Ajax/GetUnManagedMerchants/' + $('#UserInContext_UserId').val(),
datatype: 'json',
mType: 'GET',
colNames: ['', 'UnManaged Merchant', ''],
colModel: [
{ name: 'Manage', index: 'Manage', width: 20, sortable: false, formatter: function() { return '<img src="@Url.Content("~/content/images/chevron-left.png")" width="16" height="16" alt="Merchants" />'; } },
{ name: 'Name', index: 'Name', width: 325 },
{ name: 'id', index: 'id', width: 0, hidden: true , key: true}
],
pager: '#grdUnManagedPager',
rowNum: 15,
width: 450,
height: 300,
viewrecords: true,
caption: 'Current UnManaged Merchants',
beforeRequest: function() {
var getUrl = '/Ajax/GetUnManagedMerchants/' + $('#UserInContext_UserId').val();
$('#grdUnManaged').setGridParam([{ url: getUrl }]);
},
beforeSelectRow: function (rowid, e) {
var iCol = $.jgrid.getCellIndex(e.target);
if (iCol == 0) {
var merchantId = jQuery(this).getRowData(rowid)['id'];
var userId = $('#UserInContext_UserId').val();
ManageMerchant(userId, merchantId);
return true;
}
return false;
}
});
jQuery("#grdUnManaged").jqGrid('navGrid', '#grdUnManagedPager', { add: false, edit: false, del: false, search: false, refresh: true });
});
Вы писали о ** ** двух сеток, но код содержит только одну сетку. В коде есть некоторые ошибки, такие как использование ключа: true, в виде одного столбца. Почему вы используете разные значения для 'index' и' name' ('name: 'Manage'' и' index:' manage'')? Это действительно то, что вам нужно на бэкэнде? Вы используете '$ ('# UserInContext_UserId'). Val()' как часть URL. В случае, когда значение 'url' будет установлено ** one ** во время инициализации сетки. Вы должны использовать ** reset ** значение 'url' внутри обратного вызова' beforeRequest', например, чтобы иметь * фактическое * значение, используемое в URL-адресе. – Oleg
Спасибо за понимание. Я внес изменения, которые вы предложили (я повторно разместил оба блока кода), но я все еще не получаю вызов ajax, когда я нажимаю на следующую страницу. – twreynol