2010-07-30 46 views
1

我有一個廣義的PHP例程,它可以從不同的mySQL查詢生成xml結果。 xml的實際結構將根據使用哪個查詢而有所不同。 (實際上,列數將有所不同。)當列數是動態的(即由數據集確定)時,如何使用jqGrid?

我剛開始探索使用jqGrid,並且我想寫一個廣義的顯示例程,其中我對我的php腳本執行ajax調用以獲取相關的XML,然後,基於我回來的XML,動態創建jqGrid(即列數,列名等)的jqGrid的012MODEL。

這是可能的,如果是這樣,我該如何處理它?

回答

1

你可以做一個單獨的AJAX請求來檢索動態列。獲得該數據後,您需要動態生成colmodel和colnames選項,並使用它們創建jqGrid。此時,只要URL結果集保證包含所有動態列,您就可以向其傳遞一個URL來檢索數據。

這有幫助嗎?

+0

這是有益的,類似於anoth呃堆棧溢出響應我發現。請參閱http://stackoverflow.com/questions/2277962/jqgrid-and-dynamic-column-binding。我希望不需要對數據源進行2次查詢,因爲它響應速度相對較慢,整體性能會受到負面影響。 – jalperin 2010-08-01 14:22:28

+0

不幸的是,您需要提出兩個請求,除非您在呈現初始頁面之前以某種方式在服務器上執行動態列計算。 – 2010-08-01 15:21:58

0

您可以合併列模型並將其與數據一起添加,並使用一個請求獲取所有內容,可能會使用ajax和json在頁面中獲取多個相似的jqGrid。

1

假設您的列被映射到JSON對象的屬性/屬性, 是的,只需要對服務器進行一次調用即可。但你必須:

  • 有過JSON(網格數據)控制從服務器過來
  • 通過查看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 
... 
    }); 
相關問題