以声明方式对Dojo DataGrid进行排序

时间:2009-09-25 16:32:51

标签: datagrid dojo xmlstore

我有一个从XML数据存储加载的DataGrid,都是以声明方式创建的。我想在加载数据时设置排序。我发现的所有例子都以编程方式处理这个例子并暗示它应该是可行的。

这是创建数据源的代码。

<head>
    <title>Untitled Page</title>
    <style type="text/css">
        @import "StyleSheet.css";
        @import "js/dojotoolkit/dijit/themes/pfga/pfga.css";
        @import "js/dojotoolkit/dojo/resources/dojo.css";
        @import "js/dojotoolkit/dojox/grid/resources/Grid.css";
        @import "js/dojotoolkit/dojox/grid/resources/pfgaGrid.css";
    </style>

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

    <script type="text/javascript">
        dojo.require("dojo.parser");
        dojo.require("dojox.grid.DataGrid");
        dojo.require("dojox.data.XmlStore");
        dojo.require("dijit.layout.ContentPane");
    </script>
</head>

<body class="pfga">

<div dojotype="dojox.data.XmlStore" url="events.xml" jsID="eventStore"></div>

<table dojoType="dojox.grid.DataGrid" store="eventStore" class="pfga" style="height:500px" clientSort="true" jsID="eventGrid">
  <thead>
    <tr>
      <th field="date" width="80px">Date</th>
      <th field="description" width="600">Description</th>
      <th field="DateID" sortDesc="true" hidden="false">DateSort</th>
    </tr>
    <tr>
        <th field="time" colspan="3">Details</th>
    </tr>
  </thead>
</table>

</body>

2 个答案:

答案 0 :(得分:3)

对于记录,在dojo 1.5中,它是传递给数据网格的'sortInfo'参数。它使用与'canSort'函数相同的约定,即表示列(从1开始)的数字和表示排序方向的符号。

我在http://docs.dojocampus.org/dojox/grid/DataGrid添加了对此效果的评论。

例如,此网格按“最近的第一个”顺序中的“已创建”列进行排序:

<table dojoType="dojox.grid.DataGrid" clientSort="true" selectionMode="single"
   formatterScope="formatterScope" dojoAttachPoint="logGrid" sortInfo="-2">
   <thead><tr>
    <th field="clientId" width="10%">Client ID</th>
    <th field="created" width="20%" formatter="datefmt">Created</th>
    <th field="message" width="30%" formatter="messagebodyfmt">Message</th>
    <th field="token" width="10%">Token</th>
    <th field="type" width="20%">Type</th>
    <th field="username" width="10%">Username</th>
   </tr>
</table>

当然,您选择的商店及其理解排序指令的方式会产生进一步的影响,例如我使用的是JsonQueryRestStore,sortInfo参数会导致商店查询,包括基于dojox.data.JsonQuery的排序语法和处理查询的后端必须了解如何在返回数据之前对数据进行排序。

答案 1 :(得分:0)

一旦我添加了JSID来解决我的过滤问题

,看起来Sort就开始工作了