Javascript 按ID获取声明性dojo datagrid

Javascript 按ID获取声明性dojo datagrid,javascript,dojo,Javascript,Dojo,我无法通过ID访问声明式创建的datagrid,以便设置其数据存储 这是我的代码,但树返回为未定义 提前感谢您的帮助 <!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"></scr

我无法通过ID访问声明式创建的datagrid,以便设置其数据存储

这是我的代码,但树返回为未定义

提前感谢您的帮助

<!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>

A.
名称
计数
require([“dijit/registry”,“dojo/data/ItemFileReadStore”],函数(registry,ReadStore){
var store=new ReadStore();
var-tree=Registry.byId(“myTree”);
控制台日志(树);
//树。设置存储(存储);
});

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

  • 数据类型
    不是一件事;您需要
    数据dojo类型
    (您可能会将其与不推荐的
    dojoType
    混淆)
  • 设置
    datadojoid
    会创建一个全局变量,而不是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>

...
要求([
“dojo/parser”,
“dijit/注册表”,
“dojo/data/ItemFileReadStore”,
“dojox/grid/TreeGrid”
],函数(解析器、注册表、ReadStore){
parser.parse();
//var store=新的ReadStore(…);
var-tree=registry.byId(“myTree”);
控制台日志(树);
//树。设置存储(存储);
});

感谢您的回复,但我在您的示例中遇到以下错误:dojo/parser::parse()错误类型错误:无法读取未定义的{stack:(…)的属性“toString”,消息:“无法读取未定义的”}parser.js.uncompressed.js的属性“toString”,89我假设您至少在dojo 1.8上。如果您使用的是较早的数据,请尝试使用最初使用的数据dojo type=“dojox.grid.TreeGrid”,而不是我使用的模块ID语法。