Я построил таблицу данных dojo 1.5 + dojox.data.JsonRestStore. Когда сетка рендерится, я вижу «морковку», которая показывает, что сортировка сработала и по умолчанию в правом столбце. Однако содержимое столбца (строковые значения - field: 'projectShortName', ... см. Код ниже) фактически не сортируется. Нажатие на нисходящую / восходящую кнопку не меняет порядок или строки. Они по сути заблокированы. Я не уверен, почему?
У меня сортировка столбцов отключена для некоторых столбцов и включена для других с помощью canSort (). У меня есть только средства форматирования для вызовов со столбцами, у которых сортировка выключена. Я попытался сделать все столбцы сортируемыми или только те, которые мне действительно нужны. Нет кости.
Вот код компоновки / сетки:
var layout = [{
поле: '_item',
имя: '& nbsp',
форматтер: выберите формат,
ширина: '25px'
},
{
поле: 'имя_проекта',
Название: «Название проекта»,
ширина: 325px
},
{
поле: 'projectShortName',
имя: «Короткое имя»,
ширина: '80px'
},
{
поле: 'projectAreaName',
название: «RQM Project Area»,
ширина: 175px
},
{
поле: '_item',
название: «Test Guide Status»,
ширина: '190px',
formatter: testCaseGenerationOptionFormatter
},
{
поле: 'projectOwner',
имя: «Владелец»,
ширина: 140px
},
{
поле: 'projectCreationTime',
название: «Дата создания»,
ширина: '100px'
},
{
поле: 'projectLastUpdateTime',
название: «Дата последнего изменения»,
ширина: '120px'
}];
dojo.empty(dojo.byId('workspaceGridContainer'));
if (dijit.byId("projectGrid")) {
dijit.byId("projectGrid").destroyRecursive();
}
// Create a new grid:
var grid = new dojox.grid.DataGrid({
id:'projectGrid',
onHide: dojo.hitch(this, function() {
dijit.byId("projectGrid").destroyRecursive();
}),
store: jsonStore,
clientSort: true,
autoHeight: true,
//sortInfo: "-2",
selectionMode: 'single',
rowsPerPage: '100',
structure: layout
},document.createElement('div'));
dojo.byId("workspaceGridContainer").appendChild(grid.domNode);
// Call startup, in order to render the grid:
grid.startup();
//var test = grid.setSortInfo(obj);
// Prevent sorting on column 1
grid.canSort = function(col){ if((Math.abs(col) == 1) || (Math.abs(col) == 5) || (Math.abs(col) == 6) || (Math.abs(col) == 7) || (Math.abs(col) == 8)) { return false; } else { return true; } };
var index = grid.getSortIndex();
if(index!=2) {
if(grid.canSort(2)){
grid.setSortIndex(2, false);
}
}
Как видите, я прокомментировал и sortInfo. Любой совет будет принят во внимание!
-Doug