Javascript 从服务器加载jqgrid结构,而不仅仅是数据
是否可以通过ajax JQGrid结构(列)从服务器加载数据?Javascript 从服务器加载jqgrid结构,而不仅仅是数据,javascript,jquery,ajax,jqgrid,Javascript,Jquery,Ajax,Jqgrid,是否可以通过ajax JQGrid结构(列)从服务器加载数据? 如果可能的话,你能举个例子吗 没有理由不这样做,您只需要按照正确的顺序(异步)做事,类似这样的事情(请原谅psuedo代码) 这会让你走到那里的一段路。我猜您也会希望通过Ajax加载数据,在这种情况下,您可以将jqGrid设置中的“Data”选项设置为回调函数(这没有很好的文档),或者您可以启动两个Ajax调用,一个用于数据,一个用于结构,然后当它们都返回到一起并实例化您的网格对象时,没有理由不这样做,您只需要按照正确的顺序(异步)
如果可能的话,你能举个例子吗 没有理由不这样做,您只需要按照正确的顺序(异步)做事,类似这样的事情(请原谅psuedo代码)
这会让你走到那里的一段路。我猜您也会希望通过Ajax加载数据,在这种情况下,您可以将jqGrid设置中的“Data”选项设置为回调函数(这没有很好的文档),或者您可以启动两个Ajax调用,一个用于数据,一个用于结构,然后当它们都返回到一起并实例化您的网格对象时,没有理由不这样做,您只需要按照正确的顺序(异步)进行操作,类似这样的事情(请原谅psuedo代码)
这会让你走到那里的一段路。我猜您也会希望通过Ajax加载数据,在这种情况下,您可以将jqGrid设置中的“Data”选项设置为回调函数(这没有很好的文档),或者您可以启动两个Ajax调用,一个用于数据,一个用于结构,然后当它们都返回时,将两者合并并实例化网格对象您可以使用所有隐藏列创建jqGrid。您需要创建具有足够多列的网格。列的名称(在
colModel
中)可以有一些通用值,如“c1”
,“c2”
,“c3”
。。。来自服务器的响应可以包含colModel
信息和数据。在beforeProcessing
回调中,您可以更改colModel
并设置新的列标题。演示如何动态设置列标题。代码列可以通过用法setLabel
方法简化。演示如何使用setColProp
动态设置colModel
full的大多数设置。如果您将该解决方案与我发布的setColWidth
方法结合使用(请参见),那么您可以创建完美的解决方案。您可以创建包含所有隐藏列的jqGrid。您需要创建具有足够多列的网格。列的名称(在colModel
中)可以有一些通用值,如“c1”
,“c2”
,“c3”
。。。来自服务器的响应可以包含colModel
信息和数据。在beforeProcessing
回调中,您可以更改colModel
并设置新的列标题。演示如何动态设置列标题。代码列可以通过用法setLabel
方法简化。演示如何使用setColProp
动态设置colModel
full的大多数设置。如果您将该解决方案与我发布的setColWidth
方法结合使用(参见),那么您可以创建完美的解决方案。您是否试图在AJAX调用之前定义网格,而不定义列,或者在调用之后声明/定义网格和列是一个选项?@AJ我需要在服务器调用之后定义网格列,因为它取决于一些应该在服务器端计算的条件。在客户端,我只有一个网格对象,每次都应该填充/重新填充不同的列和数据。您是否试图在AJAX调用之前定义网格而不定义列,或者在调用之后声明/定义网格和列是一个选项?@AJ我需要在服务器调用之后定义网格列,因为它取决于一些应该在服务器端计算的条件。在客户端,我只有一个网格对象,每次都应该填充/重新填充不同的列和数据。非常感谢!如果你能用数据来扩展你的例子,我将不胜感激。我的意思是在一个ajax调用中,而不是两个调用中。这是一个很好的答案。为了完成数据部分,我将使用数据类型:“local”
定义网格,在服务器的数组对象中设置列数据,然后迭代添加每一行。非常感谢!如果你能用数据来扩展你的例子,我将不胜感激。我的意思是在一个ajax调用中,而不是两个调用中。这是一个很好的答案。为了完成数据部分,我将使用数据类型:“local”
定义网格,在服务器的数组对象中设置列数据,然后迭代添加每一行。
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)
})