jqGrid 및 JSON 서버 응답을 사용할 때 내 JSON 매핑을 올바르게 가져 오는 데 문제가있는 것 같습니다. ,jqGrid JSON 매핑 오류
var grid = $('#grid_id');
grid.jqGrid({
datatype: 'local',
colNames: ['ID', 'Company Name', 'Location', 'Phone', 'Agent', 'Last Load'],
colModel: [
{name: 'ID', index: 'ID', jsonmap: 'ID', width: 75},
{name: 'Company Name', index: 'Name', jsonmap: 'Name', width: 150},
{name: 'Location', index: 'Address', jsonmap: 'Address', width: 150},
{name: 'Phone', index: 'Phone', jsonmap: 'Phone', width: 125, align: 'center'},
{name: 'Agent', index: 'Agent', jsonmap: 'Agent', width: 150},
{name: 'Last Load', index: 'last_trx', jsonmap: 'last_trx', width: 150}
],
loadonce: true,
shrinkToFit: false,
width: 600,
rowNum: 20,
rowList: [10, 20, 30, 40, 50, 100],
repeatitems: false,
jsonReader: { repeatitems: false, id: '0' },
pager: '#companies_pager',
caption: 'Company List',
data: [
{ID: 'cmp1', Name: 'Name1', Address: 'Address1', Phone: 'Phone1', Agent: 'Agent1', last_trx: 'last_trx1'},
{ID: 'cmp2', Name: 'Name2', Address: 'Address2', Phone: 'Phone2', Agent: 'Agent2', last_trx: 'last_trx2'}
]
});
ID, 전화 :
[
{ID: 'cmp1', Name: 'Name1', Address: 'Address1', Phone: 'Phone1', Agent: 'Agent1', last_trx: 'last_trx1'},
{ID: 'cmp2', Name: 'Name2', Address: 'Address2', Phone: 'Phone2', Agent: 'Agent2', last_trx: 'last_trx2'}
]
내있는 jqGrid 설정은이 (테스트에 사용 지역의 데이터 타입 및 지역 데이터 세트)과 같이 :
예를 들어, 내 서버 응답은 다음과 같습니다 및 에이전트가 모두 표시됩니다 (데이터 소스 이름이 정확히 동일 함). 그러나 회사 이름, 위치 및 마지막로드는 모두 표시되지 않습니다. jsonmap
을 jsonReader: { repeatitems: false}
과 함께 사용하면 colNames
개체와 JSON 개체에 다른 이름을 사용할 수 있다고 생각했습니다.
모든 도움을 주시면 대단히 감사하겠습니다.
업데이트 늦게 업데이트하여 죄송합니다. 이것이 코드가 테스트에서 어떻게 보이는지입니다. _data.rows는 JSON 객체의 배열입니다.
var noRecords = $('<div>No results for the entered company name.</div>');
grid.jqGrid({
datatype: 'local',
colNames: ['ID', 'Company Name', 'Location', 'Phone', 'Agent', 'Last Load'],
colModel: [
{name: 'ID', jsonmap: 'ID', width: 75},
{name: 'Company Name', jsonmap: 'Name', width: 150},
{name: 'Location', jsonmap: 'Address', width: 150},
{name: 'Phone', jsonmap: 'Phone', width: 125, align: 'center'},
{name: 'Agent', jsonmap: 'Agent', width: 150},
{name: 'Last Load', jsonmap: 'last_trx', width: 150}
],
loadonce: true,
shrinkToFit: false,
width: 600,
rowNum: 20,
rowList: [10, 20, 30, 40, 50, 100],
repeatitems: false,
jsonReader: { repeatitems: false, id: '0' },
pager: '#companies_pager',
caption: 'Company List',
loadComplete: function() {
if(grid[0].p.reccount === 0) {
noRecords.show();
}
else {
noRecords.hide();
}
}
});
/* Get the list of companies based on the search criteria */
function getCompanies() {
var company = document.getElementById('company').value;
if((company != '') && (company != oldCompany)) {
oldCompany = company;
myAjax('get', {method: 'getCompanies', a: 'companies', data: company}, callbackGetCompanies);
}
}
/* Parse the server response */
function callbackGetCompanies(_data) {
if(_data && _data.message) {
if(_data.message == 'true') {
grid.jqGrid('clearGridData').jqGrid('setGridParam', {data: _data.rows, page: 1}).trigger('reloadGrid');
}
else {
dialog(_data.message);
}
}
else {
serverError();
}
}
내 게시물을 업데이트하여 실제로 어떻게 사용되는지 알려 드렸습니다. 이것을 사용하면 실제'datatype : 'local'' use는 없을 것입니다. 그리드를 다시로드 할 때'datatype'이 json으로 변경됩니다. 'colModel'의'name' 옵션이'colNames' 배열의 해당 이름이어야한다고 생각하는데 잘못 맞습니까? – Kyle
당신이 게시 한'colModel'을 사용하면 (이전에 잘 테스트 했었 습니다만), 원본이 작동하지 않는 이유에 대해 혼란스러워했습니다. 이전의 코멘트에서 말한 것처럼 colModel의'name' 속성과'jsonmap' 속성의 차이점에 혼란 스럽습니다. – Kyle
@ 카일 : 아직도 이해가 안되는 이유 : 왜'myAjax'와'datatype : 'local''을'datatype :'json''의 사용법을 서버에서 직접로드하는 대신에 사용합니까? 'name' 옵션은 컬럼의 자유로운 식별자입니다. 이것은 많은 경우에 ID를 생성하는 데 사용됩니다. 따라서 그 이름은 id 명명 규칙과 일치해야합니다. named 속성을 입력으로 사용하면'datatype : 'local''의 경우 입력 데이터에서와 동일한'name' 속성을 선택해야합니다. 'datatype : 'json''을 사용하면'jsonmap'을 사용할 수 있습니다. 여기에는 데이터의 입력 항목에서 열의 값을 가져 오는 방법이 나와 있습니다. – Oleg