我是新手到jqGrid
,並通過Ajax
調用和顯示在jqGrid
從Servlet填充數據。這工作正常沒有問題。但是,在我的情況下,列名是動態的,因爲我將日期顯示爲列名。避免另一個異步服務器調用jqGrid
因此,當搜索Dynamic colModel
for jqGRid
時,我發現下面的代碼。
但是,這會導致兩個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'並使用新選項創建網格。 –