【问题标题】:Load jqgrid structure from server, not only data从服务器加载 jqgrid 结构,不仅是数据
【发布时间】:2014-01-21 05:23:51
【问题描述】:

是否可以通过 ajax JQGrid 结构(列)与数据一起从服务器加载? 如果可能的话,你能举个例子吗?

【问题讨论】:

  • 您是想在 AJAX 调用之前定义网格而不定义列,还是在调用之后声明/定义网格和列?
  • @AJ 我需要在服务器调用之后立即定义网格列,因为它取决于一些应该在服务器端计算的条件。在客户端,我只有一个网格对象,每次都应该用不同的列和数据填充/重新填充。

标签: javascript jquery ajax jqgrid


【解决方案1】:

没有理由不这样做,你只需要以正确的顺序(异步)做事,像这样(原谅伪代码)

var jqGridOptions = {
   /*  various options here */
}

$.ajax({
   url: jqGridStructureUrl
}).success(function(jqGridColumns){


    // Add the col model to the other options    
    jqGridOptions.colModel = jqGridColumns.colModel
    jqGridOptions.colNames = jqGridColumns.colNames

    // set up the jqGrid
    $j("#gridId").jqGrid(jqGridOptions)

})

这将使您顺利到达那里。我猜您还想通过 Ajax 加载数据,在这种情况下,您可以将 jqGrid 设置上的“数据”选项设置为回调函数(这不是很好的文档) - 或者您可以触发两个 ajax 调用,一个用于数据,一个用于结构,然后当它们都返回时,将两者组合在一起并实例化您的网格对象

【讨论】:

  • 非常感谢!如果您也使用 Data 扩展您的示例,我将非常感激。我的意思是一个 ajax 调用,而不是两个调用。
  • 这是一个很好的答案。要做数据部分,我会用datatype: 'local' 定义网格,在服务器的数组对象中设置列数据,然后迭代添加每一行。
【解决方案2】:

您可以创建包含所有隐藏列的 jqGrid。您需要创建具有足够多列的网格。列的名称(在colModel 中)可以具有一些通用值,例如"c1""c2""c3" ...来自服务器的响应可以包含colModel 信息和数据。在beforeProcessing 回调中,您可以更改colModel 并设置新的列标题。 The answer 演示动态设置列标题。使用setLabel 方法简化代码列。 Another answer 演示如何使用setColProp 动态设置colModel 的最多设置。如果您将该解决方案与我在the answer 中发布的setColWidth 方法的使用相结合(也请参见here),那么您可以创建完美的解决方案。

【讨论】:

    猜你喜欢
    • 2010-11-21
    • 2013-02-18
    • 2011-10-26
    • 1970-01-01
    • 1970-01-01
    • 2015-01-17
    • 1970-01-01
    • 1970-01-01
    • 2011-09-28
    相关资源
    最近更新 更多