2013-07-18 3 views
0

У меня есть страница с двумя 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 }); 
    }); 
+0

Вы писали о ** ** двух сеток, но код содержит только одну сетку. В коде есть некоторые ошибки, такие как использование ключа: true, в виде одного столбца. Почему вы используете разные значения для 'index' и' name' ('name: 'Manage'' и' index:' manage'')? Это действительно то, что вам нужно на бэкэнде? Вы используете '$ ('# UserInContext_UserId'). Val()' как часть URL. В случае, когда значение 'url' будет установлено ** one ** во время инициализации сетки. Вы должны использовать ** reset ** значение 'url' внутри обратного вызова' beforeRequest', например, чтобы иметь * фактическое * значение, используемое в URL-адресе. – Oleg

+0

Спасибо за понимание. Я внес изменения, которые вы предложили (я повторно разместил оба блока кода), но я все еще не получаю вызов ajax, когда я нажимаю на следующую страницу. – twreynol

ответ