Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Как заполнить TreeView с произвольным количеством вложений?
|
|||
|---|---|---|---|
|
#18+
Как заполнить TreeView с произвольным количеством вложений? У меня получается, что узел пытается добавиться в узел, который еще не создан - соответственно ошибка . В таблице структура ID, PARENTID, FOLD ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2005, 14:11 |
|
||
|
Как заполнить TreeView с произвольным количеством вложений?
|
|||
|---|---|---|---|
|
#18+
ActiveX TreeView. Часто задаваемые вопросы. Часть I. http://kodu.neti.ee/~juri4/vfpplus/ax_treeview_faq_01_ru.htm ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2005, 14:14 |
|
||
|
Как заполнить TreeView с произвольным количеством вложений?
|
|||
|---|---|---|---|
|
#18+
Прочитал, не совсем понял, буду еще читать. Вот как у меня сделано: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2005, 14:23 |
|
||
|
Как заполнить TreeView с произвольным количеством вложений?
|
|||
|---|---|---|---|
|
#18+
В процессе работы возможны перемещения элементов между узлами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2005, 14:26 |
|
||
|
Как заполнить TreeView с произвольным количеством вложений?
|
|||
|---|---|---|---|
|
#18+
Дык ты введи дополнительное поле уровня иерархии. Например 0 - корневой узел, 1 - подчиненный и т.д., и перед построением дерева отсортируй таблицу по этому полю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2005, 14:35 |
|
||
|
Как заполнить TreeView с произвольным количеством вложений?
|
|||
|---|---|---|---|
|
#18+
В твоем случае надо отсортировать таблицу по возрастанию ParentID (нужен индекс по этому полю) Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. Разумеется, индекс по ParentID должен быть создан заранее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2005, 14:47 |
|
||
|
Как заполнить TreeView с произвольным количеством вложений?
|
|||
|---|---|---|---|
|
#18+
Сейчас попробую ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2005, 14:59 |
|
||
|
Как заполнить TreeView с произвольным количеством вложений?
|
|||
|---|---|---|---|
|
#18+
ВладимирМВ твоем случае надо отсортировать таблицу по возрастанию ParentID (нужен индекс по этому полю) Разумеется, индекс по ParentID должен быть создан заранее. Ни фига! Вот что у меня получилось: Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2005, 15:06 |
|
||
|
Как заполнить TreeView с произвольным количеством вложений?
|
|||
|---|---|---|---|
|
#18+
Может это сгодится http://www.caws.atnet.ru/vfox/vfoxpro1.html С уважением, Алексей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2005, 15:15 |
|
||
|
Как заполнить TreeView с произвольным количеством вложений?
|
|||
|---|---|---|---|
|
#18+
1. По-моему, дерево с произвольным уровнем вложенности надо заполнять постепенно. Сначала загрузил все корневые (01_ т.е.) и по одному child узлу (0101_) к каждому (если child-ы есть конечно), когда открываешь любой узел - удаляешь загруженный подузел (0101_) и грузишь точно так же как вначале всех child-ов (0101_) и к каждому из них по одному подузлу (010101_) - и т.д. При таком методе экономится время и независимо от того, сколько ты грузишь узлов и какой уровень вложенности (количество узлов и уровень вложенности имеет тенденцию со временем расти по мере увеличения БД) - дерево грузится и открывается мгновенно. 2. Вот пример для такой таблички basa: поля key, parent, name, edizm - все Character Код: plaintext 1. 2. 3. 4. 5. 6. 7. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. На Expand дерева ставишь: удаление загруженного подузла, и точно так же, как грузил корневые узлы грузишь подузлы текущего. Одно отличие: вначале таблица сканерится пока parent='0_' - т.е. узлы корневые, здесь же ставишь такой же order находишь запись где parent=key текущего узла и сканеришь, пока выплняется это условие. 3. Чтобы не терять время - ставишь проверку на количество узлов у текущего. Если 1 - тогда все как п.2, если >1 - значит подузлы уже загружались и ничего больше делать не надо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2005, 15:27 |
|
||
|
Как заполнить TreeView с произвольным количеством вложений?
|
|||
|---|---|---|---|
|
#18+
Aleksey-KМожет это сгодится http://www.caws.atnet.ru/vfox/vfoxpro1.html С уважением, Алексей. Спасибо, но это немного не то 10-й час за компом, голова вообще не варит.... Если сделать такой алгоритм: 1. Отобрать записи PID=0 2. Для каждой записи (ii=ID) - записать в tree - Отобрать записи с PID=ii - записать в tree - Отобрать записи с PID=kk ....... Только вот как остановиться? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2005, 15:28 |
|
||
|
Как заполнить TreeView с произвольным количеством вложений?
|
|||
|---|---|---|---|
|
#18+
lo-pata Сейчас постараюсь разобраться ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2005, 15:30 |
|
||
|
Как заполнить TreeView с произвольным количеством вложений?
|
|||
|---|---|---|---|
|
#18+
А про сортуровку таблицы - оч правильно говорили, обрати внимание на order ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2005, 15:32 |
|
||
|
Как заполнить TreeView с произвольным количеством вложений?
|
|||
|---|---|---|---|
|
#18+
lo-pataА про сортуровку таблицы - оч правильно говорили, обрати внимание на order см. выше - сортировка не помогает ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2005, 15:33 |
|
||
|
Как заполнить TreeView с произвольным количеством вложений?
|
|||
|---|---|---|---|
|
#18+
lo-pata Мне надо, чтобы узлы переносились в процессе работы. Перенес - узел стоит на новом месте, выделенный. Так все и работало, пока не наткнулся на недостаток алгоритма - иногда пытаетсся записать в еще не созданный узел. Теперь рассматриваю постепенное заполнение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2005, 15:38 |
|
||
|
Как заполнить TreeView с произвольным количеством вложений?
|
|||
|---|---|---|---|
|
#18+
Как может писаться в еще не созданный узел? При создании узла всегда надо указать кто ему parent, иначе как его добавлять, куда? Это же основа построения дерева - от корневых и вглубь. Так что проанализируй механизм добавления. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2005, 15:42 |
|
||
|
Как заполнить TreeView с произвольным количеством вложений?
|
|||
|---|---|---|---|
|
#18+
lo-pataКак может писаться в еще не созданный узел? вот и вылетает ошибка lo-pataТак что проанализируй механизм добавления. вот и анализирую ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2005, 15:49 |
|
||
|
Как заполнить TreeView с произвольным количеством вложений?
|
|||
|---|---|---|---|
|
#18+
Да, опять поторопился. В "классической" схеме ID, ParentID вобщем случае невозможно создать нужный порядок сортировки при помощи индекса. При такой структуре заполнение осуществляется через рекурсию или вложенные циклы. Сначала все корневые узлы (ParentID=0), потом все узлы для первого созданного, потом все узлы для первого от первого созданного и т.п. Хотя, обычно, никто и не строит сразу все дерево. Физически строится только то, что пользователь видит. Построение узла происходит только в момент его раскрытия. Да и то, только первый отображаемый уровень. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2005, 15:51 |
|
||
|
Как заполнить TreeView с произвольным количеством вложений?
|
|||
|---|---|---|---|
|
#18+
Почитай здесь http://forum.foxclub.ru/read.php?f=5&i=52997&t=52905 Там приведены ссылки на другие схемы хранение "древовидных структур" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2005, 15:56 |
|
||
|
Как заполнить TreeView с произвольным количеством вложений?
|
|||
|---|---|---|---|
|
#18+
ВладимирМПочитай здесь http://forum.foxclub.ru/read.php?f=5&i=52997&t=52905 Там приведены ссылки на другие схемы хранение "древовидных структур" да не грузится у меня фоксклуб. на шлюзе работает, у меня - нет, почему - хз. Пошел я до дому, там буду думать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2005, 16:01 |
|
||
|
Как заполнить TreeView с произвольным количеством вложений?
|
|||
|---|---|---|---|
|
#18+
Hi w3d! Если ты хочешь "всё и сразу" заполнить (замечу что мне обычно это кажется неразумным делать) - то надо таким образом упорядочить твою таблицу, чтобы там "узлы" находились перед "листьями" - в общем случае это кстати весьма непросто сделать :( Однако если ты откажешься от полного заполнения дерева, а заполнишь только первый уровень (взяв узлы у которых Parent = 0 или NULL или как ты там это организовал), а в Child каждому поместишь фиктивный узел. И в Expand будешь удалят этот фиктивный узел, запрашивать из таблицы список "детей" ТОЛЬКО для соответствующего узла (его ID ты скорее всего так или иначе "интегрировал" в Node.Key, потому "достать" его не проблема) и динамически дополнять дерево, то ты решишь и изначальную проблему, и заодно избавишься от тормозов при создании дерева (а они будут если там число узлов перевалит за несколько тысяч). AFAIK тема динамического заполнения дерева хорошо освещена - поищи и обязательно найдёшь даже примеры кода. Posted via ActualForum NNTP Server 1.1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2005, 22:05 |
|
||
|
Как заполнить TreeView с произвольным количеством вложений?
|
|||
|---|---|---|---|
|
#18+
Hi Диченко! Вводя подобное поле, ты нарушаешь принципы нормализации данных, и получаешь КУЧУ проблем при обновлении данных - вот например перетянули узел с 3-го уровня на 1-й - и пошло в цикле (или рекурсии - это неважно) "обновление" этого поля и для перемещённого узла, и для всех его потомков... В общем очень спорное решение, слишком уж много минусов. Posted via ActualForum NNTP Server 1.1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2005, 23:14 |
|
||
|
Как заполнить TreeView с произвольным количеством вложений?
|
|||
|---|---|---|---|
|
#18+
ВладимирМ На фоксклубе нашел: >>По этому поводу есть очень красивое решение из книги "Visual FoxPro 6. Разработка корпоративных приложений" Род Педдок и др. Это решение оформлено в виде класса ActiveX.VCX Передаешь туда в виде параметра таблицу или курсор со следующей структурой: PrimaryKey C(10) - код записи ParentKey C(10) - ссылка на родителя (код записи из этой же таблицы) Description C(30) - текст элемента И получаешь готовое дерево в OleTreeView<< Там приведена ссылка, но она не работает. Где еще можно это взять? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2005, 06:23 |
|
||
|
Как заполнить TreeView с произвольным количеством вложений?
|
|||
|---|---|---|---|
|
#18+
В Expand стоит такой код: Код: plaintext 1. выдается правильно, а на добавление ругается... что не так? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2005, 08:03 |
|
||
|
|

start [/forum/topic.php?fid=41&msg=32906195&tid=1594900]: |
0ms |
get settings: |
7ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
46ms |
get topic data: |
6ms |
get forum data: |
1ms |
get page messages: |
35ms |
get tp. blocked users: |
1ms |
| others: | 221ms |
| total: | 332ms |

| 0 / 0 |
