Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> TreeView, Сохранение "плюсика" для пустых TreeNode 
:(
    Опции темы
Idsa
Дата 27.3.2007, 17:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2086
Регистрация: 5.12.2006
Где: Томск

Репутация: 14
Всего: 62



Меня интересует, есть ли нормальный способ сделать так, чтобы TreeNode, не содержащие других TreeNode, отображались с плюсиком слева (по умолчанию они отображаются без возможности раскрытия). На данный момент я добиваюсь желаемого добавлением "фиктивных" элементов, что не есть красиво.

Надеюсь, что понятно объяснил суть проблемы.


--------------------
Мой блог: alexidsa.blogspot.com
PM MAIL ICQ   Вверх
ivashkanet
Дата 27.3.2007, 17:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 47
Всего: 149



Цитата(Idsa @  27.3.2007,  16:23 Найти цитируемый пост)
На данный момент я добиваюсь желаемого добавлением "фиктивных" элементов, что не есть красиво.

Так все и делают ;-)

Только вот зачем тебе там плюсики?
PM MAIL WWW ICQ   Вверх
Idsa
Дата 27.3.2007, 17:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2086
Регистрация: 5.12.2006
Где: Томск

Репутация: 14
Всего: 62



Цитата(ivashkanet @  27.3.2007,  17:35 Найти цитируемый пост)
Только вот зачем тебе там плюсики?

Мне нужно сделать так, чтобы на эти элементы можно было "открыть" щелчком мышки. А в этом деле без плюсиков никуда smile


--------------------
Мой блог: alexidsa.blogspot.com
PM MAIL ICQ   Вверх
ivashkanet
Дата 27.3.2007, 17:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 47
Всего: 149



Idsa, оно-то понятно назначение плюсиков, но вот непонятно зачем раскрывать пустое

Добавлено через 1 минуту и 43 секунды
Просто, ИМХО, ты занимаешься постепенной подгрузкой нод по клику, так?

Тогда это единственный выход ;-)
PM MAIL WWW ICQ   Вверх
Idsa
Дата 27.3.2007, 17:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2086
Регистрация: 5.12.2006
Где: Томск

Репутация: 14
Всего: 62



Так пустые они лишь потому, что я их пока не заполнил. Слишком долго заполнять весь TreeView разом, поэтому я оставляю неоткрытые ноды пустыми .а заполняю их только при раскрытии.


--------------------
Мой блог: alexidsa.blogspot.com
PM MAIL ICQ   Вверх
_Dream
Дата 28.3.2007, 12:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 133
Регистрация: 4.11.2006
Где: Там

Репутация: нет
Всего: нет



не понял
то есть тебе надо чтоб раскрывались ноды то есть анбаунд модель?
и тебе надо у каждого нода + чтоб можно было раскрыть и только когда ты раскрыл то ты видишь пустой он или нет. то есть может быть так что ты кликнул по + он пропал а детей не появилось потому что их нет.. так?

я делал так
Код


// инициализация дерева - мой айтем который содаржит много всего но пока отображатся этого не будет и парент - он тут приходит как нул
private void initTree(FileItem resourceItem, TreeListNode parentNode)
{
    treeList.ClearNodes();
    treeList.BeginUnboundLoad();
    treeList.StateImageList = imageList;
    if (resourceItem != null)
    {
              TreeListNode _node = treeList.AppendNode(new object[] { _resourceItem }, parentNode);
              if (_resourceItem.Children.Count != 0) // если есть дети
              {
           _node.HasChildren = true;//!!
           _node.Tag = true;//!!
              }
             _node.StateImageIndex = getImageIndex(_node);
                }
            

    treeList.EndUnboundLoad();
}

// инициализация нода
private void initNode(Object value, TreeListNode parentNode)
{
    FileItem _item = value as FileItem;
    if (_item != null && _item.Children.Count != 0)
    {
        treeList.BeginUnboundLoad();
// есди есть дети(а мы об этом знаем из модели) 
        foreach (FileItem _child in _item.Children)
        {
            TreeListNode _node = treeList.AppendNode(new object[] { _child }, parentNode);
            if (_child.Children.Count != 0)
            {
                _node.HasChildren = true;
                _node.Tag = true;
            }
            _node.StateImageIndex = getImageIndex(_node);
        }
        treeList.EndUnboundLoad();
    }
}


// ну тут повешено инитНод
private void treeList_BeforeExpand(object sender, BeforeExpandEventArgs e)
{
    if (e.Node.Tag != null)
    {
        Cursor _currentCursor = Cursor.Current;
        Cursor.Current = Cursors.WaitCursor;
        initNode(e.Node.GetValue("mainColumn"), e.Node);
        e.Node.Tag = null;
        Cursor.Current = _currentCursor;
    }
}


не знаю то ли тебе надо  smile 

Это сообщение отредактировал(а) _Dream - 28.3.2007, 12:42
--------------------
Noone dies a virgin. Life screws us all...
PM MAIL ICQ GTalk   Вверх
Idsa
Дата 28.3.2007, 15:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2086
Регистрация: 5.12.2006
Где: Томск

Репутация: 14
Всего: 62



Цитата(_Dream @  28.3.2007,  12:19 Найти цитируемый пост)
и тебе надо у каждого нода + чтоб можно было раскрыть и только когда ты раскрыл то ты видишь пустой он или нет.

Ну почти. Я знаю, есть ли у текущего элемента дети или нет, но даже при их наличии не создаю "детей" в связи с нецелесообразностью сего действия smile.
В общем же ты правильно понял суть проблемы: свойство HasChildren идеально мне подходит... НО такого свойства нет в TreeNode. А TreeList и TreeListNode я не нашел в MSDN... Это сторонние компоненты что ли?

P. S. А вообще, конечно, странно, что TreeNode лишили столь востребованной функциональности: ведь большинство юзает TreeView именно добавляя ноды динамически.


--------------------
Мой блог: alexidsa.blogspot.com
PM MAIL ICQ   Вверх
_Dream
Дата 28.3.2007, 16:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 133
Регистрация: 4.11.2006
Где: Там

Репутация: нет
Всего: нет



ой точно это дивэкспресс же  smile 

Цитата

Я знаю, есть ли у текущего элемента дети или нет, но даже при их наличии не создаю "детей" в связи с нецелесообразностью сего действия .

так и у меня также - дети создаются только при событии раскрытия нода 
ЗЫ - может для стандартного дерева твой способ единственно верный? smile

Это сообщение отредактировал(а) _Dream - 28.3.2007, 16:49
--------------------
Noone dies a virgin. Life screws us all...
PM MAIL ICQ GTalk   Вверх
Idsa
Дата 28.3.2007, 16:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2086
Регистрация: 5.12.2006
Где: Томск

Репутация: 14
Всего: 62



Цитата(_Dream @  28.3.2007,  16:34 Найти цитируемый пост)
ой точно это дивэкспресс же

Жаль...


--------------------
Мой блог: alexidsa.blogspot.com
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.1035 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.