Перейти к содержимому


Не работает сортировка


Сообщений в теме: 31

#21 Alex TetraSoft

    Участник

  • Пользователи
  • PipPip
  • 29 сообщений
  • Пол:Мужчина

Отправлено 17 Сентябрь 2014 - 12:00

Просмотр сообщенияAlex TetraSoft (17 Сентябрь 2014 - 09:16) писал:

Да, это хорошая мысль, попробую.
Значение подтянул, но все равно не хочет сортировать по значению, сортирует также по ID :(/>

Сообщение отредактировал Alex TetraSoft: 17 Сентябрь 2014 - 12:00


#22 Alex TetraSoft

    Участник

  • Пользователи
  • PipPip
  • 29 сообщений
  • Пол:Мужчина

Отправлено 17 Сентябрь 2014 - 12:04

Прилагаю скриншот

Прикрепленные изображения

  • Прикрепленное изображение: приоритет.png


#23 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 759 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 17 Сентябрь 2014 - 13:48

Так вы добавили дополнительное поле для сортировки? Какой у него тип? Вы подтягиваете туда значение из связанной таблицы? Если да, то приведите код вычисления.

И я не вижу на скриншоте это дополнительное поле (оно должно быть открыто на этапе тестирования, скрыть можно потом).

#24 Alex TetraSoft

    Участник

  • Пользователи
  • PipPip
  • 29 сообщений
  • Пол:Мужчина

Отправлено 19 Сентябрь 2014 - 11:17

Поле называется "Приоритет". Тип у него "Число". Код такой:
$line['Приоритет'] = $line['Наименование проекта']['Приоритет проекта'];

#25 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 759 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 19 Сентябрь 2014 - 12:24

Погодите, так у вас ведь на скриншоте все сортируется правильно, по алфавиту (точнее, по цифрам, т.к. перед буквами идут именно они). Что не так то? Или вам какая-то иная сортировка нужна?

#26 Alex TetraSoft

    Участник

  • Пользователи
  • PipPip
  • 29 сообщений
  • Пол:Мужчина

Отправлено 19 Сентябрь 2014 - 12:45

У меня сортируется по полю приоритет. Сортировка правильная, но когда я группирую по полю наименоваие проекта, сортировка опять идет по ID.
Прошу прощения, что ввел Вас в заблуждение предыдущим скриншотом.

Прикрепленные изображения

  • Прикрепленное изображение: группировка.png


#27 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 759 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 19 Сентябрь 2014 - 14:51

Цитата

Сортировка правильная, но когда я группирую по полю наименоваие проекта, сортировка опять идет по ID.

Ну так все правильно, вы же добавляли поле, чтобы сортировать по нему, а не по полю связи "Наименование проекта". Сортировка по полю связи всегда будет идти по ID (т.к. оно там и хранится в БД), и вы это никак не сможете исправить. Я имел ввиду исключительно сортировку по умолчанию, задаваемую в настройках таблицы (куда можно подставить скрытое поле), а не ручную, когда вы кликаете на поле. Тоже самое касается и группировки из вашего скриншота - там тоже нужно задавать именно это вычисляемое поле, а не поле связи.

#28 Alex TetraSoft

    Участник

  • Пользователи
  • PipPip
  • 29 сообщений
  • Пол:Мужчина

Отправлено 22 Сентябрь 2014 - 10:30

Вот настройка таблицы по умолчанию.
Что не так?

Прикрепленные изображения

  • Прикрепленное изображение: настройка.png

Сообщение отредактировал Alex TetraSoft: 22 Сентябрь 2014 - 10:32


#29 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 759 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 22 Сентябрь 2014 - 11:55

У вас в настройках таблицы выбрана группировка, а она имеет приоритет перед сортировкой (вначале таблица группируется, а уже потом, внутри группы идет сортировка), иначе группировка просто не работала бы. Поэтому настройка сортировки в данном случае ни на что влияет (сортируется все равно по группе, а она у вас - снова по полю связи). Я же вам написал уже выше - если у вас включена группировка, то все настройки (т.е. подстановка вычисляемого поля) должны применяться к ней, а не к сортировке.

#30 Alex TetraSoft

    Участник

  • Пользователи
  • PipPip
  • 29 сообщений
  • Пол:Мужчина

Отправлено 22 Сентябрь 2014 - 12:32

Просмотр сообщенияCbCoder (22 Сентябрь 2014 - 11:55) писал:

У вас в настройках таблицы выбрана группировка, а она имеет приоритет перед сортировкой (вначале таблица группируется, а уже потом, внутри группы идет сортировка), иначе группировка просто не работала бы. Поэтому настройка сортировки в данном случае ни на что влияет (сортируется все равно по группе, а она у вас - снова по полю связи). Я же вам написал уже выше - если у вас включена группировка, то все настройки (т.е. подстановка вычисляемого поля) должны применяться к ней, а не к сортировке.
Да, но тогда получается ерунда какая-то а не таблица :( Вот если бы можно было в вычисляемое поле подтянуть еще одно значение (например, название проекта) тогда это решило бы проблему (наверно, хотя не факт, т.к. поле перестало бы быть числовым и значение 10 он будет сортировать после 1 )

#31 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 759 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 22 Сентябрь 2014 - 13:22

Цитата

Вот если бы можно было в вычисляемое поле подтянуть еще одно значение (например, название проекта) тогда это решило бы проблему (наверно, хотя не факт, т.к. поле перестало бы быть числовым и значение 10 он будет сортировать после 1 )

Подтянуть еще одно значение проблем никаких нет, например:

$line['Приоритет'] = $line['Наименование проекта']['Приоритет проекта']." ".$line['Наименование проекта']['Название проекта'];

Но тогда действительно поле придется поменять на текстовое и сортировка будет некорректной, как вы сами поняли. Разве что добавить еще форматирование приоритета нулями слева, при необходимости:

$line['Приоритет'] = sprintf("%02d", $line['Наименование проекта']['Приоритет проекта'])." ".$line['Наименование проекта']['Название проекта'];

Сделать же отдельно скрытое поле для настройки упорядочивания и отдельно вывод значений, как в случае сортировки, в случае с группировкой увы не получится (т.к. скрытой группировки не сделаешь).

#32 Alex TetraSoft

    Участник

  • Пользователи
  • PipPip
  • 29 сообщений
  • Пол:Мужчина

Отправлено 22 Сентябрь 2014 - 14:06

Просмотр сообщенияCbCoder (22 Сентябрь 2014 - 13:22) писал:

Подтянуть еще одно значение проблем никаких нет, например:

$line['Приоритет'] = $line['Наименование проекта']['Приоритет проекта']." ".$line['Наименование проекта']['Название проекта'];

Но тогда действительно поле придется поменять на текстовое и сортировка будет некорректной, как вы сами поняли. Разве что добавить еще форматирование приоритета нулями слева, при необходимости:

$line['Приоритет'] = sprintf("%02d", $line['Наименование проекта']['Приоритет проекта'])." ".$line['Наименование проекта']['Название проекта'];

Сделать же отдельно скрытое поле для настройки упорядочивания и отдельно вывод значений, как в случае сортировки, в случае с группировкой увы не получится (т.к. скрытой группировки не сделаешь).
Спасибо большое за ответы и терпение :)





Количество пользователей, читающих эту тему: 2

0 пользователей, 2 гостей, 0 анонимных