如果列数是动态的(即由数据集确定),如何使用jqGrid?

时间:2010-07-30 21:01:52

标签: jquery datagrid jqgrid grid

我有一个通用的php例程,可以从不同的mySQL查询生成xml结果。 xml的实际结构将根据使用的查询而有所不同。 (实际上,列数会有所不同。)

我刚刚开始探索使用jqGrid,我想编写一个通用的显示例程,我在我的php脚本中执行ajax调用以获取相关的xml,然后,基于xml我回来了,为jqGrid动态创建 colModel (即列数,列名等)。

这是可能的,如果是的话,我该如何处理呢?

3 个答案:

答案 0 :(得分:1)

您可以通过单独的AJAX请求来检索动态列来完成此操作。获得该数据后,您需要动态生成colmodel和colnames选项,并使用它们创建jqGrid。此时,只要URL结果集保证包含所有动态列,您就可以向其传递URL以从中检索数据。

这有帮助吗?

答案 1 :(得分: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
...
    });

答案 2 :(得分:0)

您可以合并列模型并将其与数据一起添加,并使用一个请求来获取所有内容,可能是使用ajax和json在页面中使用多个类似的jqGrids。