Я успешно внедрил таблицу визуализации google и добавил процесс сортировки сортировки только для одного столбца, добавив прослушиватель событий.Настроить столбец сортировки в таблице Google Визуализации
Фон: данные поступают из базы данных для отображения таблицы. У меня есть несколько столбцов таблицы с столбцом «Статус». Этот столбец должен сортироваться в соответствии с другим полем данных, которое не отображает таблицу. (Все данные поступают из базы данных с одним запросом. Все они работают хорошо.) В addListener я сортирую массив, который я получаю из базы данных в соответствии с мое требование и воссоздать таблицу на table.draw(data, options);
.
google.visualization.events.addListener(table, 'sort',
function(event) {
if(event.column == 4){
}
}
}
Проблема теперь визуализации Google таблицы всегда сортировать по второй колонке во время загрузки. Если пользователь выбрал любой другой столбец для сортировки, сортировка будет сортироваться в соответствии с выбранным столбцом. Все они работают нормально (сортировка столбцов по стрелке вниз в заголовке таблицы).
Но когда я попытался сортировать по полю, я добавил свой собственный процесс сортировки, ранее сортировка не удалялась (я могу видеть стрелку вниз по-прежнему в предыдущем отсортированном заголовке таблицы), поэтому сортировка не работает должным образом с добавленным кодом сортировки. Как предотвратить эту проблему.
Если это неясно или требуется дополнительная информация, пожалуйста, дайте мне знать.
UPDATE: Объяснение
Таблица Жеребьевка из массива, который создает из Databse. это структура
Array
(
[0] => Array
(
[Field 1] => test 1
[Field 2] =>test 2
[sortOrder] => 4
[Field 3] => Array
(
[key 1] => val 1
[Name] => test
[Date] => 2016-08-18 00:00:00
[warningLevel] => OK
)
)
....
....
...
Из этого массива я использую [Field 1], [Field 2] и [WarningLevel] поле в качестве столбцов таблицы. Но [warningLevel]
column should sort according to [sortOrder] field in array
.
Итак, что я сделал, я добавляю слушателя и внутри него. Я перестраиваю (сортирует) весь массив данных и снова создаю таблицу.
google.visualization.events.addListener(table, 'sort',
function(event) {
if(event.column == 4){
vData.sort(function(a, b) {
var valueA, valueB;
valueA = a['sortOrder'];
valueB = b['sortOrder'];
if (valueA < valueB) {
return -1;
}
else if (valueA > valueB) {
return 1;
}
return 0;
});
table.draw(vdata, options);
}
});
Все остальные колонки таблиц должны сортировать как нормальный способ (Когда пользователь сортировать один столбец его сортировка и если он двигается, чтобы отсортировать другой столбец ранее сортировки пренебрежения и сортировку вновь выбранный столбца. Сортировано заголовок столбца имеет стрелку значок), и они работают нормально. Проблема в том, что когда я попытался отсортировать столбец статуса, последний отсортированный столбец по-прежнему использует сортировку. Также стрелка в заголовке все еще отображается в раннем отсортированном столбце. Таким образом, эта сортировка столбцов не работает, как ожидалось.
Любая помощь будет оценена по достоинству.
надеюсь, что это помогает, вопрос немного трудно следовать, это помогло бы, если у вас есть рабочий пример ... – WhiteHat
Спасибо, я постараюсь это, и пусть вы знаете. Вы знаете, как изменить столбец сортировки по умолчанию? Обычно, когда таблица загрузки страниц использует второй столбец для сортировки. Мне нужно изменить его на первый столбец. –
Когда я добавляю sortAscending: true, sortColumn: 0 функция сортировки, которую я добавляю, не работает. Этот массив сложный и трудный для объяснения. Я попытаюсь снова дать хорошее представление о проблеме. Спасибо за вашу поддержку. –