按ID获取声明性dojo数据网格

时间:2015-02-20 20:18:29

标签: javascript dojo

我无法按ID访问声明性创建的数据网格,因此我可以设置其数据存储区。

这是我的代码,但是树会以 undefined 的形式返回。

提前感谢您的帮助。

<!DOCTYPE html>
<html lang="en">
    <head>
        <script src="http://ajax.googleapis.com/ajax/libs/dojo/1.10.3/dojo/dojo.js" data-dojo-config="async: true"></script>
    </head>
    <body>
        <table data-dojo-id="myTree" dataType="dojox.grid.TreeGrid" summary="This is a test">
            <thead>
                <tr>
                    <th field="a" width="200px">A</th>
                    <th field="items" aggregate="sum" itemAggregates="count">
                        <table>
                            <thead>
                                <tr>
                                    <th field="name" width="200px">Name</th>
                                    <th field="count" width="200px">Count</th>
                                </tr>
                            </thead>
                        </table>
                    </th>
                </tr>
            </thead>
        </table>
    </body>
    <script>
        require(["dijit/registry", "dojo/data/ItemFileReadStore"], function( Registry, ReadStore ) {
            var store = new ReadStore();
            var tree = Registry.byId("myTree");
            console.log(tree);
            // tree.setStore( store );
        });
    </script>
</html>

1 个答案:

答案 0 :(得分:0)

您的代码有几个导致问题的问题。

  • dataType不是一件事;您想要data-dojo-type(您可能会将其与已弃用的dojoType混淆)
  • 设置data-dojo-id会创建一个全局变量,而不是Dijit注册表的ID;设置id而不是
  • 您永远不会在文档上实际运行dojo/parser,因此即使解决了这些问题,您也不会以实际的小部件结束

这是一个固定的例子:

<body>
    <table id="myTree" data-dojo-type="dojox/grid/TreeGrid" summary="This is a test">
        ...
    </table>
</body>
<script>
    require([
        "dojo/parser",
        "dijit/registry",
        "dojo/data/ItemFileReadStore",
        "dojox/grid/TreeGrid"
    ], function(parser, registry, ReadStore) {
        parser.parse();
        //var store = new ReadStore(...);
        var tree = registry.byId("myTree");
        console.log(tree);
        // tree.setStore( store );
    });
</script>