2

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

第一个问题:我如何设置 jqGrid,而不是从 URL 中提取 JSON 数据,而只是在 JS 变量或其他东西中查找?

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

还是我与当前的斗争太多,只是接受了 jqGrid 似乎想要工作的 AJAX-y 方式?

谢谢,

〜贾斯汀

4

3 回答 3

4

这是使用 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如果由于某种原因不能内联数据,请编写一个返回 a 的操作以获取文件中的数据。

您使用 .NET JavaScript 序列化程序创建 JSON。查看JsonResult.ExecuteResultMVC 源代码中的示例。

于 2009-12-14T15:00:03.173 回答
1

请参阅 jqGrid 文档 wiki 中的数据操作页面。在那里,您会发现许多将数据提供给网格的方法。

于 2009-12-14T15:24:24.287 回答
0

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

于 2009-12-14T15:40:26.917 回答