将数据添加到dojo datagrid

时间:2012-02-23 18:30:52

标签: visual-studio-2010 sql-server-2008 dojo

我有几个与道场有关的问题。首先,我有一个我从网上复制并运行它的例子,它完美无缺。顺便说一下,我正在使用Visual Studio 2010中的Web应用程序。它运行正常,但我的问题是我使用了ajax.googleapis.com中的urls(版本1.5),但是只要我使用src = “/folder/dojo.js.uncompressed.js”与我的网络应用程序中的文件夹中的本地副本(版本1.7.1),它不起作用。对此有任何想法。

第二个问题是使用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 / grid / DataGrid.js

2 个答案:

答案 0 :(得分:1)

要使其在本地工作,请检查djConfig并使用dojo脚本包含以确保路径正确,尤其是baseUrl

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

还要确保包含正确的样式表(所有包含和样式表必须指向相同的dojo版本)

检查firebug中的Net选项卡以查看URL中的任何错误

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

dojo有一些花哨的商店,例如queryreadstore,支持分页/延迟加载

开始的好地方是道场的夜间测试:

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

答案 1 :(得分:1)

以下是我遵循的步骤:

1)从http://dojotoolkit.org/download/

下载dojo工具包

2)使用您的应用程序root安装它。通常,在我的应用程序根目录中,我有一个名为dojoroot的目录,在该目录下我解压道愿工具箱

3)在你的html中,head部分确保你的css链接指向本地dojoroot。例如:   

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

5)对于dojo.js src include,确保路径正确。例如: 如果有错误,firebug中的Net选项卡将显示它们 - 它们通常与路径问题相关