Форум программистов, компьютерный форум, киберфорум
HCL Notes: Программирование
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.95/93: Рейтинг темы: голосов - 93, средняя оценка - 4.95
0 / 0 / 0
Регистрация: 19.10.2005
Сообщений: 603

Как правильно сделать сортировку документов в иерархическом виде?

07.11.2007, 02:31. Показов 17083. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
У меня есть иерархический вид - документы, ответные документы и т.д... Теперь представим, что для навигации используется не вид, а аутлайн... Мы можем перемещать разделы (вверх, вниз), можем изменять их уровень (делать ответными и т.д.)... Вот подобный функционал необходим для моего вида
Все довольно просто если эти задачи идут независимо (т.е. либо, либо)... Но как правильно сделать сортировку, когда мне необходим и функционал перемещения раздела вверх, вниз и изменения уровня раздела? (основная проблема, на мой взгляд, когда перемещается раздел с дочерними документами предположим на две позиции вверх, а потом дочерние документы переносятся на уровень влево (т.е. становятся на тот же уровень, что и бывшый родительский документ)

... Вот так... кто-нить понял, что я хочу?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
07.11.2007, 02:31
Ответы с готовыми решениями:

Как правильно сделать сортировку?
Никак не получается отсортировать так, чтобы сначала сортировались люди военнообязанные и по году рождения, а затем невоеннообязанные. ...

Как правильно сделать сортировку?
Привет ! В базе данных, у каждой записи своя позиция 1, 2, 3… и т.д. Все они выводятся на страницу и пользователь предоставляется...

Сохранить содержимое диска в (HTML-)файл в иерархическом виде (TreeView)
Программа должна просканировать диск и вывести содержимое указанного каталога в HTML-файл в иерархическом виде. Для построения дерева...

8
0 / 0 / 0
Регистрация: 09.07.2005
Сообщений: 209
07.11.2007, 09:42
сам не пробовал но идея есть
как сдвигать разделы.
в представлении документы обычно определенным образом сортированы или выводится как были введены в базу.
вот если их сортировать например по первому столбцу. а туда выводит информацию из какого либо поля.
потом акшнами верх и вниз изменять значения этих полей(соотвественно если верх то местами поменять значение поле со значенем поля верхнего документа. так же и вниз) и обновить представления.
0
0 / 0 / 0
Регистрация: 19.10.2005
Сообщений: 603
07.11.2007, 11:35
Вобщем-то так и делается... у каждого документа есть "сортировочный номер"... вся проблема в том, как правильно изменять этот номер?
0
0 / 0 / 0
Регистрация: 09.07.2005
Сообщений: 209
07.11.2007, 14:20
а ты пробовал чтоб поднять нижнего присвоить верхнему а номер верхнего нижнему

или тебя интересует конкретно как изменить значения поля
0
0 / 0 / 0
Регистрация: 19.10.2005
Сообщений: 603
07.11.2007, 16:30
Для: alb
Представь, что у верхнего и нижнего куча ответных документов... номера ты изменил, а потом ответные документы сделал того же уровня, что и бывшие родительские... вот тут все начнет прыгать
0
0 / 0 / 0
Регистрация: 15.12.2006
Сообщений: 202
07.11.2007, 17:19
Честно говоря - не до конца въехал в суть вопроса, но предложение всё же выскажу:

а что если делать "сортировочный номер" с некоторым шагом... Например, 10-20-30-... Ну или 100-200-300-...
а уже сортировочные номера ответных документов пересчитывать относительно этого номера у "родителя"...
0
0 / 0 / 0
Регистрация: 09.07.2005
Сообщений: 209
08.11.2007, 06:35
ответные документы за своими родителями потянутся ведь
сдвинуть надо главный документ
0
0 / 0 / 0
Регистрация: 15.12.2006
Сообщений: 202
08.11.2007, 13:21
Что-то мне при такой реализации видится только вариант - поиграть с MakeResponse...
То есть, когда "родитель" уходит на другой уровень, то его "родительство" перекладывать на другой документ.
0
0 / 0 / 0
Регистрация: 19.07.2007
Сообщений: 1,098
08.11.2007, 18:38
Задача для лабораторной работы...

если отображение дочерних документов строится на | @AllDescentals то достаточно менять номера у ролительскиз документов - дочерние сами подтянутся... Если как то по другому, то примерно так:

Допустим, что нумерация для дочерних определяется так номер родителя.номер сына.номер внука и т.д через точки.
Тобишь двигая родительский документ, нам нужно во всех детках поменять первую циферку до первой точки.


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


Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Function changeNum(doc As notesdocument, num As Long, index As Long)
%REM
doc - долк, у которого мы меняем номер
num - номер, который хотим дать
index - номер в иерархии, вообще можно и без него, просто 0 вместо него использовать, но если вдруг понадобится менять номер не с главного дока, тогда он нужен...
%END REM
Dim col As notesdocumentCollection
Dim oldNum As Variant
Dim newNum As String
Dim response As notesdocument
If Not IsNull(InStr(doc.getItemValue("Num"), ".")) Then
oldNum = Split(doc.getItemValue("Num"), ".")
oldNum(index) = Cstr(num)
Else
oldNum = doc.getItemValue("Num")
End If
newNum = Join(oldNum, ".")
Set col = doc.responses
Set response = col.getFirstDocument
Call doc.ReplaceItemvalue("Num", newNum)
While Not response Is Nothyng
Call changeNum(Response, num, index)
Wend
End Function
Могут быть синтаксические ошибки.. писал прямо тут... :huh:
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
08.11.2007, 18:38
Помогаю со студенческими работами здесь

Как правильно реализовать сортировку массива
Подскажите пожалуйста, как правильно реализовать сортировку? array.sort() using System; using System.Collections.Generic; using...

AdoTable, как правильно прописывать сортировку
Добрый вечер!!! Ребят помогите разобраться с некоторыми функциями AdoTable В С++...Как правильно прописывать сортировку ??? Я пробовал...

Подскажите как правильно реализовать сортировку
Я написал сортировку для выпадающего списка (при выборе определенного пункта из списка, сортируется по выбранному пункту( т.е. полю), а как...

Как правильно забиндить сортировку по ключу
имеется вот такой контейнер vector<map<string,int>> conteyner; как правильно забиндить сортировку по ключу map<string,int> ...

Как правильно запустить поразрядную сортировку?
Добрый день! есть такая замечательная ветка Алгоритмы сортировок есть там поразрядная сортировка: чтобы не прыгать по ссылкам:...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
Контроль уникальности заводского номера - вариант №2
Maks 24.03.2026
В отличие от предыдущего варианта добавлено прерывание циклов, также добавлены новые переменные для сохранения контекста ошибки перед прерыванием цикла: Процедура ПередЗаписью(Отказ, РежимЗаписи,. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера - вариант №1
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью в КА2. Данные берутся из регистра сведений, по которому настроено. . .
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 23.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа в КА2. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru