2012-01-20 2 views
1

Я построил доджо 1.5 datagrid + dojox.data.JsonRestStore. Когда рендеринг сетки, я вижу «морковку», которая показывает, что сортировка уволилась и находится по умолчанию в правильном столбце. Однако содержимое столбца (строковые значения - поле: «projectShortName», ... см. Код ниже) фактически не сортируются. Нажатие кнопки нисходящего/восходящего не изменяет порядок или строки. Они по сути заперты. Я не уверен, почему?Сортировка в Dojo 1.5 datagrid не работает

У меня сортировка столбцов отключена для определенных столбцов и для других с помощью canSort(). У меня есть только формы для звонков с столбцами, у которых сортировка отключена. Я попытался сделать все столбцы отсортированными или только теми, которые я действительно хотел. Нет кубиков.

Вот макет/код сетки: макета переменная = [{ поле: '_item', имя: '& NBSP', форматировщик: selectFormatter, ширина: '25px' }, { поле: 'Projectname', название: 'название проекта', ширина: '325px' }, { поле: 'projectShortName', название: 'Краткое имя', ширина: '80px' }, { поле: 'projectAreaName', название: 'RQM Площадь проекта', ширина: '175px' }, { поле: '_item', название: 'Руководство Test Status', ширина: '190px', форматировщик: testCaseGenerationOptionFormatter }, { поле: 'projectOwner', имя: 'Владелец', ширина: '140px' }, { поле: 'projectCreationTime', название: 'Дата создания', ширина: '100px' }, { Поле: 'projectLastUpdateTime', имя: 'Last Modified Date', width: '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

ответ

0

Возможно, вы используете неверный оператор сравнения. Документация Dojo использует строго равную '===', тогда как вы используете только равную '=='. Это вызывает проблемы в js, особенно когда вы сравниваете литерал, т. Е. «1» с объектом: «Math.abs (col). Официальный метод grid.canSort должен быть закодирован следующим образом:

function canSort(col){ return Math.abs(col) === 2;} 

Примечания Описание Mozilla, равного оператора, а JS преобразование типа используются для решения различных типов данных: https://developer.mozilla.org/en/JavaScript/Reference/Operators/Comparison_Operators

Равно (==) - Если два операнда не одного типа, JavaScript преобразует операнды, а затем применяет строгое сравнение. Если любой операнд является числом или логическим, операнды, если это возможно, преобразуются в числа; else, если любой операнд является строкой, другой операнд, если возможно, преобразуется в строку. Если оба операнда являются объектами, тогда JavaScript сравнивает внутренние ссылки, равные, когда операнды относятся к одному и тому же объекту в памяти.

+0

Привет, TedPrz, я пробовал выше (используя ===), и это не сработало. Я не думаю, что проблема строго связана с сортировкой столбца или нет. Я уже в состоянии видеть сортировку «морковь» в голове стола на правильных строках и никакой моркови на строках, которые я не хочу сортировать. Поэтому я предполагаю, что этот код не является проблемой? Проблема заключается в том, что ли сорт нисходит или возрастает, порядок никогда не меняется, и это явно не в алфавитном порядке. Конечно, я предполагаю, что сортировка должна быть в алфавитном порядке. :) -Doug – Doug

Смежные вопросы