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