Сортировка Dojo DataGrid Декларативно

У меня есть DataGrid, который загружается из хранилища данных XML, все создано декларативно. Я хотел бы установить сортировку при загрузке данных. Все примеры, которые я нашел, имеют дело с этим программно и намекают на то, что это должно быть выполнимо декларативно.

Это код, который создает источник данных.

<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 ответа

Решение

Похоже, сортировка начала работать после того, как я добавил JSID для решения проблемы фильтрации

Для записи, в 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, и бэкэнд, обрабатывающий Запрос должен понимать, как сортировать данные, прежде чем возвращать их.

Другие вопросы по тегам