저는 jqGrid
에 초보자이며 Ajax
호출을 통해 서블릿에서 데이터를 채우고 jqGrid
에 표시합니다. 이것은 아무 문제없이 잘 작동합니다. 하지만, 필자가 열 이름으로 날짜를 표시하고 있기 때문에 필자의 경우에는 열 이름이 동적입니다.다른 비동기 서버 호출을 피하십시오.
따라서 jqGRid
에 대해 동적 인 colModel
을 검색 할 때 아래 코드를 발견했습니다.
하지만 두 개의 Ajax 호출이 발생합니다. 누구든지 동적 열 머리글을 사용 했습니까?
<script type="text/javascript">
var grid = $("#rowsList");
var url = '/getRowList?Id=9371&fromDate=2011-12-06&toDate=2012-12-06';
jQuery().ready(function(){
$.ajax({
url: url,
dataType: 'json',
success: function(response) {
prepareGrid(response);
},
error: function(request, textStatus, errorThrown) {
alert(textStatus + " : " + request.responseText);
}
});
});
function prepareGrid(response){
if (response) {
if (!response.Error) {
var colData = getColumnsData(response.columnData);
colData = eval('{' + colData + '}');
grid.jqGrid({ // This makes second server call
url: url,
datatype: 'json',
mtype: 'POST',
colModel: colData,
colNames: response.columnData,
height : 'auto',
pager: '#pager',
viewrecords: true,
loadtext: 'Loading',
sortorder: "asc",
gridview: true,
altRows: true,
cellEdit: false,
caption: 'Data List'
});
}
}
}
/**
* Creates column data for jqgrid
*/
function getColumnsData(Data) {
// return column data array in jqGrid compatible format
// This works fine
}
</script>
내 다른 선택의 여지가 첫 번째 호출에만 열 이름을 반환하고 colModels
을 설정하지만이 단일 서버 호출 할 수 있으면 좋을 것입니다.
사용자가 다음 페이지를 클릭하면 새로운 열 이름이 필요합니다. 그래서, 가능할까요? –
@HardikMishra : 거의 모든 것이 가능하지만 어떤 경우에는 그런 이상한 행동을 구현해야 할 수도 있습니다. 그럼에도 불구하고 [onPaging] (http://www.trirand.com/jqgridwiki/doku.php?id=wiki:pager#events) 콜백을 구현하여 'GridUnload'를 호출하고 새로운 옵션으로 그리드를 다시 생성 할 수 있습니다. – Oleg
답변 해 주시고 의견을 공유해 주셔서 감사합니다. 나는 GridUnload를 선택하고 새로운 옵션으로 그리드를 생성했다. –