Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Быстрое создание дерева

6.0K
12 февраля 2009 года
Balda
79 / / 12.05.2008
Пишу в MS VS .NET 2008 на C#.
В БД есть таблица состоящая из трех столбцов: ID, Name, ID_Parent. По данным из этой таблицы нужно построить дерево.
Загоняю эту таблицу в dataSet и потом строю дерево так:
Код:
private void Form14_Load(object sender, System.EventArgs e)
{
    FillTreeRecurs(this.treeView1.Nodes,0);

}

private void FillTreeRecurs(TreeNodeCollection tnc, int parent)
{
    System.Data.DataView dv = new DataView(dataSet1.Tables[0]);
    dv.RowFilter = "ID_Parent = "+parent.ToString();
    foreach( System.Data.DataRowView drw in dv )
    {
        if ((int) drw["ID"] != parent)
        {
          TreeNode tn = new TreeNode(drw["Name"].ToString());
          tnc.Add(tn);
          FillTreeRecurs(tn.Nodes, (int) drw["ID"]);
        }
    }
}


Всё работает, но ДОЛГО. На старых машинах процесс создания дерева занимает минут 5, что очень не нравиться пользователям.
Подскажите, пожалуйста, как оптимизировать мой метод или как ещё можно создать дерево по данным из таблицы.
Главное чтобы работало всё быстро и правильно.
1.8K
12 февраля 2009 года
NextTime
217 / / 19.12.2007
Еще не думал как реализовать это программно, но зачем тебе грузить все дерево сразу? загрузи на 2 уровня ниже и хватит... Как пользователь открывает одну из ветвей - подгрузи еще на 1 уровень в каждом уровне. Тебе всего лишь придется отлеживать открытие узла дерева и (желательно в отдельном потоке) грузить еще по одному уровню на каждый уровень. И еще можешь при простое программы в отдельном потоке с циклом и thread.sleep потихоньку и незаметно грузить дерево.
11
12 февраля 2009 года
oxotnik333
2.9K / / 03.08.2007
здесь посмотри
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог