Динамически изменять порядок отображения данных в ColdFusion - PullRequest
0 голосов
/ 05 января 2010

Используя ColdFusion , я пытаюсь настроить приложение меню и пунктов меню, где вы можете изменить порядок меню, а также пункты меню в меню. Я нашел что-то относительное, но это не совсем помогает, http://wil -linssen.com / musings / entry / extending-jquery-sortable-with-ajax-mysql .

Так что, если вы посмотрите демонстрацию там, это, по сути, то, что я хотел бы иметь, хотя с подпунктами под каждым основным элементом.

Полагаю, мне сложно понять, что использовать в базе данных для столбца displayOrder, а затем, как будет выглядеть обновление.

Это в основном то, что мне нужно, чтобы быть в состоянии сделать:

Баскетбол (категория 1)

  • Обувь

  • Рубашка

  • носки

Бейсбол (категория 2)

  • Ракетки

  • Шарики

  • шапка

Мне нужно иметь возможность изменить порядок на то, что я хотел для обеих категорий и их элементов, чтобы оно могло быть:

Бейсбол (категория 1)

  • Ракетки

  • Головные уборы

  • Шарики

Баскетбол (категория 2)

  • Рубашка

  • носки

  • Обувь

Я думаю, что меня отталкивает то, что происходит в столбце displayOrder базы данных. Я предполагаю их идентификатор, но тогда как бы вы правильно упорядочили в SQL?

Ответы [ 5 ]

2 голосов
/ 05 января 2010

Следуя примеру, вам понадобится столбец в вашей базе данных для хранения порядка элементов, которые вы хотите показать. Использование числового значения помогает упорядочивать при запросе элементов по порядку. Примером может быть:

SELECT ProductCategories FROM MyTable ORDER BY DisplayOrder
1 голос
/ 05 января 2010

Другим способом является сериализация массива в JSON / WDDX и сохранение в поле varchar в БД. Таким образом, порядок сохраняется, и вы можете легко десериализовать его обратно в массив в правильном порядке.

0 голосов
/ 06 января 2010

Никто действительно не решил это, но я закончил тем, что заставил это работать правильно, анализируя сортируемый сериализованный массив и просматривая его. Затем я определил, была ли это категория или предмет.

Демонстрацию можно найти здесь: http://develop.michaelpstone.net/development/demos/treeView/stone/secure/agentsadmin.cfm Я предоставлю более подробное описание функции в сообщении в блоге, которое будет опубликовано позже.

0 голосов
/ 05 января 2010

Поскольку это меню, вы также можете использовать модель вложенного набора . Это не так просто, как модель родитель / потомок (концептуально). Но это значительно упрощает управление иерархией среднего размера (например, меню).

Я не уверен, какую базу данных вы используете, но вы можете найти хорошее сравнение двух моделей (смежность и вложенные множества) на сайте MySQL

Существует также, по крайней мере, один код для управления вложенными наборами на riaforge.org

0 голосов
/ 05 января 2010

Самый простой способ сделать это - создать родительские отношения в базе данных. У вас будет каждый подпункт, указывающий на родительский элемент в той же таблице. Чтобы получить родительские элементы, выберите * из таблицы, упорядоченной по столбцу сортировки, где родительский элемент равен нулю. Затем зациклите их, получая элементы, чьим родителем является текущий элемент верхнего уровня.

Вы можете найти больше информации об этом, если вы в google / bing / что-нибудь для вариаций "дерева меню" найдете именно то, что вам нужно, или посмотрите, как построить деревья в БД для получения более общей информации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...