没有AJAX的ASP.NET MVC + jqGrid

我有一个ASP.NET MVC应用程序正在执行对产品数据库的搜索。 我想使用TreeGrid模块在jqGrid中显示结果。 我真的不需要网格是AJAX-y,因为数据是静态的,并且它足够小,可以立即发送到客户端。

第一个问题:如何设置jqGrid,以便不是从URL中提取JSON数据而只是查看JS变量或其他内容?

其次,什么是让ASP.NET MVC将JSON数据放入JavaScript变量的最合适的方法? 我已经在我的控制器中有了List,只是想以某种方式在JSON之后把它变成JS变量。

或者我是否反对当前的太多,只是接受jqGrid似乎想要工作的AJAX-y方式?

谢谢,

〜贾斯汀

以下是如何使用JavaScript函数显示jqGrid树。

$(document).ready(function() { TreeDemo.setupGrid($("#tree")); }); TreeDemo = { data: { A: ["A1", "A2"], B: ["B1", "B2"] }, setupGrid: function(grid) { grid.jqGrid({ colNames: ['Name'], colModel: [ { name: 'Name', index: 'Name', width: "250em" } ], datatype: TreeDemo.treeData, loadui: "none", sortname: 'Number', treeGrid: true, treeGridModel: "adjacency", sortorder: "asc" }) }, treeData: function(postdata) { var items = postdata.nodeid ? TreeDemo.data[postdata.nodeid] : TreeDemo.data; var i = 0; var rows = new Array(); for (val in items) { var isLeaf = postdata.nodeid != undefined; rows[i] = { Name: val, Id: val, level: postdata.nodeid ? 1 : 0, parent: postdata.nodeid || null, isLeaf: isLeaf ? "true" : "false", expanded: "false" } i++; } $("#tree")[0].addJSONData({ Total: 1, Page: 1, Records: 2, Rows: rows }); } }; 

请注意,有很多选项可供选择,我的示例只有一个。

我将JSON引入JS var的方法是:

  1. 编写一个HTML Helper,它向页面发出一个简短的脚本。
  2. 编写一个返回JavaScriptResult以获取文件中数据的操作,如果由于某种原因,您无法将数据内联。

您可以使用.NET JavaScript序列化程序创建JSON。 查看MVC源代码中的JsonResult.ExecuteResult作为示例。

请参阅jqGrid文档wiki中的Data Manipulation页面。 在那里,您将找到许多方法将数据提供给网格。

还有一个Table_to_jqGrid插件可能是一个有用的选项。