2012-02-23 45 views
0

我有几个与dojo相关的问题。首先,我有一个例子,我从网上复制并运行它,它完美地工作。顺便说一句,我在Visual Studio 2010中的web应用程序工作。它运行良好,但我的问题是,我使用从ajax.googleapis.com urls(版本1.5),它的工作原理,但只要我使用src = “/folder/dojo.js.uncompressed.js”与本地副本(版本1.7.1)位于我的Web应用程序的文件夹中,但不起作用。任何关于这个的想法。将数据添加到dojo数据网格

第二个问题是使用datagrid示例,而不是硬编码datagrid的值;我想将一个sql查询的结果从数据库传递给datagrid。有没有人有这方面的想法?

这里的代码显示尝试使用本地存储的文件:

<title>The Simplest Dojo DataGrid Example of All Time</title> 
<link rel="stylesheet" type="text/css" 
    href="http://ajax.googleapis.com/ajax/libs/dojo/1.5/dijit/themes/claro/claro.css" /> 

<link rel="stylesheet" type="text/css" 
    href="/Styles/Grid.css" /> 

<link rel="stylesheet" type="text/css" 
href="http://ajax.googleapis.com/ajax/libs/dojo/1.5/dojox/grid/ 
    resources/claroGrid.css" /> 

</head> 
<body class="claro"> 
<div style="width: 600px; height: 200px"> 
    <table id="billsGrid" dojoType="dojox.grid.DataGrid"> 
     <thead> 
      <tr> 
       <th field="number">Number</th> 
       <th field="name">Name</th> 
       <th field="position">Position</th> 
       <th field="victories" width="180px">Super Bowl Victories</th> 
      </tr> 
     </thead> 
    </table> 
    </div> 

    <script type="text/javascript" 
    src="/Styles/dojo.js.uncompresses.js" 
     djConfig="parseOnLoad:true"></script> 

    <script type="text/javascript"> 
    dojo.require("dojox.grid.DataGrid"); 
    dojo.require("dojo.data.ItemFileReadStore"); 
    </script> 

    <script type="text/javascript"> 
    dojo.ready(function() { 
    var theGreatestTeamOfAllTime = { 
     items: [{ 
      "number": "12", 
      "name": "Jim Kelly", 
      "position": "QB", 
      "victories": "0" 
     }, 
      { 
       "number": "34", 
       "name": "Thurman Thomas", 
       "position": "RB", 
       "victories": "0" 
      }, 
      { 
       "number": "89", 
       "name": "Steve Tasker", 
       "position": "WR", 
       "victories": "0" 
      }, 
     { 
      "number": "78", 
      "name": "Bruce Smith", 
      "position": "DE", 
      "victories": "0" 
     } 
      ], 
     identifier: "number" 
    }; 

    var dataStore = 
    new dojo.data.ItemFileReadStore(
    { data: theGreatestTeamOfAllTime } 
    ); 
    var grid = dijit.byId("billsGrid"); 
    grid.setStore(dataStore); 
    }); 
    </script> 

    </body> 
    </html> 

这不能与JScript错误此起彼伏工作。

无法加载DojoX中/格/ DataGrid.js

回答

1

为了使它在本地工作,检查你的djConfig和脚本包括道场,以确保路径是正确的,尤其是的baseUrl

djConfig = { 
      parseOnLoad: true, 
      baseUrl: "../dojoroot/dojo/" 
      } 

也确保你包括正确的样式表(所有包括和样式表必须指向相同的dojo版本)

检查萤火虫的Net标签以查看URL中的任何错误

关于你的第二个问题,dojo有一个数据存储的概念 - 这些是客户端(javascript)端数据的持有者。您的服务器端可以以JSON(首选),XML或任何其他格式返回查询结果。 客户端(javascript/html)可以使用AJAX获取这些数据并将其呈现在数据网格中。

道场有花哨的商店,如支持分页的QueryReadStore /惰性加载

一个良好的开端是道场夜间测试:

http://archive.dojotoolkit.org/nightly/dojotoolkit/dojox/grid/tests/

+0

抱歉,对于迟到的回应并感谢您的建议。您能否帮助我使用代码的语法,因为我一直无法找到正在使用的本地保存的dojo文件的示例。请参阅上面的编辑, – vbNewbie 2012-02-29 17:27:18

+0

我已经在下面发布了一个跟进答案(评论有一个字符限制,因此跟进答案) – 2012-03-03 00:32:39

1

下面是我遵循的步骤:

1)从http://dojotoolkit.org/download/下载dojo工具包

2)安装它与你的应用程序根。通常,在我的应用程序根目录中,我有一个名为dojoroot的目录,在该目录下,我解压了dojo工具包

3)在您的html头部部分中,确保您的css链接指向本地dojoroot。对于xample:

4)确保您的djConfig设置正确: djConfig = { parseOnLoad:真实, 的baseUrl: “../../../dojoroot/dojo/” }; 请注意,baseUrl很重要 - 它是dojo.js所在的目录

5)对于dojo.js src include,请确保路径正确。例如: 如果出现错误,萤火虫中的Net标签会显示它们 - 它们通常与路径问题有关

+0

再次感谢,最终想通了。 – vbNewbie 2012-03-05 18:10:47

+0

很棒 - 乐于帮忙。您能否将此答案标记为已接受,以便将其记录为已解决。谢谢 – 2012-03-06 18:51:39

+0

你好,你知道任何简单的数据网格的例子。我已经从示例中完全复制了源代码,但仍然出现错误。 – vbNewbie 2012-05-22 20:41:25