1

HTMLで私は動的にテーブルを作成しています:

function createTable() 
{
    var tablecontents = "";
    tablecontents = "<table>";
    tablecontents += "<tr>";

    for (var i = 0; i < 12; i ++)
    {
        tablecontents += "<td>";
        tablecontents += '<div data-dojo-type="com.Control" id="Control' + i + '" style="width: 143px; height: 200px;"/>' ;
        tablecontents += "</td>";
    }
        tablecontents += "</tr>";

    for(var z = 0; z < 12; z++) 
    {
        tablecontents += "<tr>";
        tablecontents += "<td>";
        tablecontents += 'C';
        tablecontents += "</td>";
        tablecontents += "<td>";
        tablecontents += '<div data-dojo-type="com.Control" id="ControlTwo' + z + '" style="width: 40px; height: 20px;"/>' ;
        tablecontents += "</td>";
        tablecontents += "<td>";
        tablecontents +=  'B'
        tablecontents += "</td>";
        tablecontents += "<td>";
        tablecontents +=  'A'
        tablecontents += "</td>";
        tablecontents += "<td>";
        tablecontents +=  '2010'
        tablecontents += "</td>";
        tablecontents += "<td>";
        tablecontents += '<div data-dojo-type="com.Control" id="ControlThree' + z + '" style="width: 40px; height: 20px;"/>' ;
        tablecontents += "</td>";
        tablecontents += "</tr>";
    }
      tablecontents += "</table>";
      document.getElementById("graphicalData").innerHTML = tablecontents;
} 

このテーブルに CSV ファイルから取得したデータを入力したいので、次のコードを書きました。

ready(function() {

            //programmatically reading CSV from external file
            var personStoreForGrid = new dojox.data.CsvStore({
                url:"datasheet.csv"
            });

            //storing to DataStore
            var objectStore = dojo.store.DataStore({
                store: personStoreForGrid
            });

            objectStore.query().then(function(results)
            {
                //results contains everything from csv file

            });

            createTable();
            parser.parse();
}); 

この場合、csv ファイルから結果を取得する前にテーブルが作成されます。これを逆にして、テーブルを作成する直前に内容を取得するにはどうすればよいですか?

Dojo の新機能です。

4

1 に答える 1

1

あなたがすでに書いたように

objectStore.query().then(function(results)
{
   //results contains everything from csv file

});

それは遅延/非同期アクションです。次のようなクエリが終了したら作成する必要があります

  objectStore.query().then(lang.hitch(this, function(results)  {
  //results contains everything from csv file
    this.createTable();
 }));

lang は dojo/_base/lang です

于 2013-05-30T05:34:54.667 に答える