我有一個廣義的PHP例程,它可以從不同的mySQL查詢生成xml結果。 xml的實際結構將根據使用哪個查詢而有所不同。 (實際上,列數將有所不同。)當列數是動態的(即由數據集確定)時,如何使用jqGrid?
我剛開始探索使用jqGrid,並且我想寫一個廣義的顯示例程,其中我對我的php腳本執行ajax調用以獲取相關的XML,然後,基於我回來的XML,動態創建jqGrid(即列數,列名等)的jqGrid的012MODEL。
這是可能的,如果是這樣,我該如何處理它?
我有一個廣義的PHP例程,它可以從不同的mySQL查詢生成xml結果。 xml的實際結構將根據使用哪個查詢而有所不同。 (實際上,列數將有所不同。)當列數是動態的(即由數據集確定)時,如何使用jqGrid?
我剛開始探索使用jqGrid,並且我想寫一個廣義的顯示例程,其中我對我的php腳本執行ajax調用以獲取相關的XML,然後,基於我回來的XML,動態創建jqGrid(即列數,列名等)的jqGrid的012MODEL。
這是可能的,如果是這樣,我該如何處理它?
你可以做一個單獨的AJAX請求來檢索動態列。獲得該數據後,您需要動態生成colmodel和colnames選項,並使用它們創建jqGrid。此時,只要URL結果集保證包含所有動態列,您就可以向其傳遞一個URL來檢索數據。
這有幫助嗎?
您可以合併列模型並將其與數據一起添加,並使用一個請求獲取所有內容,可能會使用ajax和json在頁面中獲取多個相似的jqGrid。
假設您的列被映射到JSON對象的屬性/屬性, 是的,只需要對服務器進行一次調用即可。但你必須:
僞代碼如下所示:
// row - the JSON object whose data represent a row
var colNames = new Array();
var colModel = new Array();
for (var i in row) {
colNames.push(i);
colModel.push({ name: i, index: i, width: 60, sorttype: sorttype, formatter: formatter, formatoptions: formatoptions, align: align});
}
$('#grid').jqGrid({
datatype : 'local',
colNames: colNames,
colModel: colModel
...
});
這是有益的,類似於anoth呃堆棧溢出響應我發現。請參閱http://stackoverflow.com/questions/2277962/jqgrid-and-dynamic-column-binding。我希望不需要對數據源進行2次查詢,因爲它響應速度相對較慢,整體性能會受到負面影響。 – jalperin 2010-08-01 14:22:28
不幸的是,您需要提出兩個請求,除非您在呈現初始頁面之前以某種方式在服務器上執行動態列計算。 – 2010-08-01 15:21:58