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

Posted

技术标签:

【中文标题】以声明方式对 Dojo DataGrid 进行排序【英文标题】:Sorting a Dojo DataGrid Declaratively 【发布时间】:2010-12-01 11:42:59 【问题描述】:

我有一个从 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" >Date</th>
      <th field="description" >Description</th>
      <th field="DateID" sortDesc="true" hidden="false">DateSort</th>
    </tr>
    <tr>
        <th field="time" colspan="3">Details</th>
    </tr>
  </thead>
</table>

</body>

【问题讨论】:

说真的……没人能帮忙吗?所以我想我会在阅读器读取之前对 XML 文件中的数据进行排序。 【参考方案1】:

作为记录,在 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" >Client ID</th>
    <th field="created"  formatter="datefmt">Created</th>
    <th field="message"  formatter="messagebodyfmt">Message</th>
    <th field="token" >Token</th>
    <th field="type" >Type</th>
    <th field="username" >Username</th>
   </tr>
</table>

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

【讨论】:

【参考方案2】:

添加 JSID 以解决过滤问题后,Sort 似乎开始工作

【讨论】:

以上是关于以声明方式对 Dojo DataGrid 进行排序的主要内容,如果未能解决你的问题,请参考以下文章

以编程方式创建 Dojo DataGrid:“抱歉,发生错误。”布局问题?

如何以编程方式对 Material UI DataGrid 列进行排序?

Dojo Datagrid - 以编程方式设置选定行的样式

dojo datagrid 将在更改排序时使页面“跳转”

如何通过 JS 访问在 HTML 中声明的 Dojo DataGrid?

将新项目添加到商店后 Dojo Datagrid 排序