0

Dojo データグリッドが読み込まれるまで、読み込みを続けるスタンバイ ウィジェットを使用しようとしています。私はこれを試しています。ただし、待ち受けウィジェットは表示されません。待機するだけで、データがロードされます。

        require([
        "dojox/grid/DataGrid",
        "dojo/store/Memory",
        "dojo/data/ObjectStore",
        "dojo/request",
        "dojox/widget/Standby",
        "dijit/form/Button",
        "dojo/domReady!",
        ],
        function (DataGrid, Memory, ObjectStore, request, Standby, Button) {
            var standby = new Standby({ target: "grid" });
            document.body.appendChild(standby.domNode);
            standby.startup();
            standby.show();
            var grid, dataStore;
            request.get("MyFile.aspx", {
                handleAs: "json"
            }).then(function (data) {
                dataStore = new ObjectStore({ objectStore: new Memory({ data: data }) });
                grid = dijit.byId("grid");
                grid.setStore(dataStore, { id: "*" }, {});                    
                var struct = [
                    { name: "Field1", field: "Name", width: "50%" },
                    { name: "Field2", field: "Name2", width: "50%" }, ];
                grid.setStructure(struct);
                grid.startup();
                standby.hide();
4

1 に答える 1

1

呼び出しの順序に問題があるだけだと思います。最初にグリッドを初期化し、次にスタンバイを初期化し、データをフェッチしてグリッドに設定し、スタンバイを非表示にする必要があります。あなたの場合:

    require([
        "dojox/grid/DataGrid",
        "dojo/store/Memory",
        "dojo/data/ObjectStore",
        "dojo/request",
        "dojox/widget/Standby",
        "dijit/form/Button",
        "dojo/domReady!",
        ],
        function (DataGrid, Memory, ObjectStore, request, Standby, Button) {
            //Create the grid
            var grid = new DataGrid({
                query: { id : '*' },
                structure : [
                    { name: "Field1", field: "Name", width: "50%" },
                    { name: "Field2", field: "Name2", width: "50%" }
                ]
            }, 'grid');
            grid.startup();

            //Create the stand by
            var standby = new Standby({ target: "grid" });
            document.body.appendChild(standby.domNode);
            standby.startup();
            standby.show();

            //Fetch data
            var grid, dataStore;
            request.get("teste.php", {
                handleAs: "json"
            }).then(function (data) {
                var grid = dijit.byId('grid');

                //Create store and put in the grid
                dataStore = new ObjectStore({ objectStore: new Memory({ data: data }) });
                grid.setStore(dataStore, { id: "*" }, {});

                //Hide standby
                standby.hide();
            }, function(error) {
                console.log(error);
            });
        }
   );
于 2013-08-01T21:43:18.287 に答える