2017-02-14 9 views
0

Мой JQGrid код находится нижеJQGrid не может загружать данные из JSON показывает пустую сетку

jQuery("#jqgrid").jqGrid({ 

mtype: 'GET', 
datatype: "json", 
height: '350', 
colNames: ['<%=Resources.Resource.Action%>','uid', '<%=Resources.Resource.Fullname%>', '<%=Resources.Resource.Username%>', '<%=Resources.Resource.Group%>', '<%=Resources.Resource.Status%>', '<%=Resources.Resource.JoinedDate%>', '<%=Resources.Resource.LastLoginDate%>', '<%=Resources.Resource.LastLoginIp%>'], 
colModel: [ 
    { name: 'act', index: 'act', sortable: false }, 
    { name: 'uid', index: 'uid' }, 
    { name: 'userfullname', index: 'userfullname' }, 
    { name: 'username', index: 'username' }, 
    { name: 'MemberGroup', index: 'MemberGroup', editable: true }, 
    { name: 'Status', index: 'Status', align: "right", editable: true }, 
    { name: 'JoinDate', index: 'JoinDate', align: "right", editable: true, editable: true, sorttype: "date", unformat: pickDate }, 
    { name: 'LastLoginDate', index: 'LastLoginDate', align: "right", editable: true, editable: true, sorttype: "date", unformat: pickDate }, 
    { name: 'LoginIp', index: 'LoginIp', sortable: false, editable: true }], 
jsonreader: { 
    repeatitems: false, root: 'rootUser', 
    id: 'uid', 
    page: function(obj) { return 1; }, 
    total: function(obj) { return 1; }, 
    records: function (obj) { return obj.rootUser.length; }, 

}, 
rowNum: 10, 
rowList: [10, 20, 30], 
pager: '#pager_jqgrid', 
sortname: 'uid', 
rownumbers: true, 
toolbarfilter: true, 
viewrecords: true, 
sortorder: "asc", 
gridComplete: function() { 
    var ids = jQuery("#jqgrid").jqGrid('getDataIDs'); 
    for (var i = 0; i < ids.length; i++) { 
     var cl = ids[i]; 
     be = "<button class='btn btn-xs btn-default btn-quick' title='Edit Row' onclick=\"showPanelPlayer()\"><i class='fa fa-pencil'></i></button>"; 
     //se = "<button class='btn btn-xs btn-default btn-quick' title='Save Row' onclick=\"jQuery('#jqgrid').saveRow('" + cl + "');\"><i class='fa fa-save'></i></button>"; 
     //ca = "<button class='btn btn-xs btn-default btn-quick' title='Cancel' onclick=\"jQuery('#jqgrid').restoreRow('" + cl + "');\"><i class='fa fa-times'></i></button>"; 
     //jQuery("#jqgrid").jqGrid('setRowData', ids[i], { act: be + se + ca }); 
     jQuery("#jqgrid").jqGrid('setRowData', ids[i], { act: be }); 
    } 
}, 
editurl: "ajax/dummy-jqtable.html", 
caption: "<%=Resources.Resource.MemberListing%>", 
multiselect: true, 
autowidth: true, 

});

Когда я нажимаю кнопку «Отправить», он будет вызывать мою бэкэнд-страницу и генерировать Json.

Моей кнопку Отправить код является

function showPanel() {      
    var UserName = document.getElementById('txtUser').value;     
    $('#jqgrid').setGridParam({ url: 'ListUser.aspx?cmd=LoadUser&UN=' + UserName }).trigger('reloadGrid'); 
} 

Json Возвращением из задней части является

{"rootUser":[{"uid":1,"userfullname":"Johnson","username":"Deng","MemberGroup":0,"Status":1,"JoinDate":new Date(1487058713667),"LastLoginDate":new Date(1487058713667),"LoginIp":""},{"uid":2,"userfullname":"James Abb","username":"James","MemberGroup":0,"Status":1,"JoinDate":new Date(1487058713667),"LastLoginDate":new Date(1487058713667),"LoginIp":""}]} 

Проблемы я облицовка моей сетки шоу пусто, то, что все, что я пропускаю сформировать свой код ?

ответ

0

Входные данные не в формате JSON из-за полей использования, таких как "JoinDate": new Date(1487058713667). Вы можете проверить данные JSON здесь: http://jsonlint.com/. Исправление проблемы зависит от версии jqGrid, которую вы используете, и от fork jqGrid (free jqGrid, коммерческого Guriddo jqGrid JS или старого jqGrid в версии < = 4.7). Например, бесплатный jqGrid позволяет использовать formatoptions: { srcformat: "u1000", newformat: "d-M-Y H:i:s" } для анализа данных от "JoinDate": 1487058713667 до 14-Feb-2017 08:51:53. Вы можете использовать причину, другую newformat.

Я бы порекомендовал вам дополнительно не использовать gridComplete с помощью ссылки, которую вы называете setRowData. Использование пользовательского форматирования или formatter: actions намного эффективнее.

+0

То же самое не отображается после того, как я удалю все значения datetime –

+0

@abccba: вы должны предоставить демонстрационную версию, которая воспроизводит проблему. Я протестировал свое предложение, прежде чем отправлять ответ. Я мог видеть '14-Feb-2017 08: 51: 53' для входных данных' 'JoinDate": 1487058713667' для 'formatter:" date ", formatoptions: {srcformat:" u1000 ", newformat:" dMY H: i : s "}'. Я использовал бесплатный jqGrid 4.13.6 в своем тесте. – Oleg