Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Построение дерева / 6 сообщений из 6, страница 1 из 1
14.11.2011, 21:56:15
    #37526390
MSSQLAndDotNet
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Построение дерева
MySQL 5.5
дерево хранится как показано на рисунке
необходимо:
1) отобразить дерево на TreeView
Далее пользователь изменяет (добавляет, удаляет, перемещает) узлы на treeView,
жмет кнопку "сохранить"
необходимо
2) сохранить дерево в базе (исходя из содержимого treeView)

Пригодятся любые советы
...
Рейтинг: 0 / 0
14.11.2011, 22:13:10
    #37526402
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Построение дерева
Какие сложности в реализации?
...
Рейтинг: 0 / 0
14.11.2011, 22:19:47
    #37526408
ShSerge
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Построение дерева
МСУ,

Классика жанра. Я работал в одной конторе, где иерархические штучки именно так выглядели.
Вообще-то, это - не очень хорошо. Лучше таки с айди и парент-айди.

2 ТС. Да всё очень просто. Ну, таки подумайте. :)
...
Рейтинг: 0 / 0
15.11.2011, 16:05:52
    #37527565
MSSQLAndDotNet
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Построение дерева
...
Рейтинг: 0 / 0
15.11.2011, 23:56:37
    #37528298
MSSQLAndDotNet
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Построение дерева
Таки подумал
вот что получилось по предварительным наброскам

Код: 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.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
        /// <summary>
        /// принимает корень дерева и заполняет его дочерние элементы согласно таблице m_modulepage
        /// вспомогательная процедура для FillTreeViewModulePage
        /// </summary>
        /// <param name="thenode"></param>
        /// <param name="sess"></param>
        protected void filChildModulePage(TreeNode thenode, ISession sess, IList mn)
        {              
            DataTable dt = new DataTable("tbTmp");
            dt.Columns.Add("MenuName", typeof(string));
            dt.Columns.Add("ItemOrder", typeof(string));
            foreach (System.Object[] o in mn)
            {
                DataRow Row = dt.NewRow();
                Row["MenuName"] = o[0].ToString();
                Row["ItemOrder"] = o[1].ToString();
                dt.Rows.Add(Row);
            }
            DataView dv = new DataView(dt);
            dv.RowFilter = "[ItemOrder] LIKE '" + thenode.Value.ToString() + "%' ";  

            for (int i = 0; i < dv.Count; i++)
            {                            
                TreeNode tn = new TreeNode();
                tn.Text = dv[i][0].ToString();
                tn.Value = dv[i][1].ToString() + "-";
                thenode.ChildNodes.Add(tn);
                filChildModulePage(tn, sess,mn);
            }            
        }

        /// <summary>
        /// заполняет объект TreeView согласно содержимому таблицы m_modulepage
        /// </summary>
        /// <param name="tw"></param>
        /// <param name="sess"></param>
        protected void FillTreeViewModulePage(TreeView tw, ISession sess)
        {         
            StringBuilder sb = new StringBuilder();
            sb.Append(" select MenuName,ItemOrder from m_ModulePage ");
            sb.Append(" order by ItemOrder ");
            IList mn = sess.CreateSQLQuery(sb.ToString()).List();
              
                foreach (System.Object[] o in mn)
                {
                    TreeNode tn = new TreeNode();
                    tn.Text = o[0].ToString();
                    tn.Value = o[1].ToString() + "-";
                    tw.Nodes.Add(tn);
                }          

            // проходим по всем родителям и добавляем потомков
            foreach (TreeNode thenode in tw.Nodes)
            {
                 filChildModulePage(thenode,sess,mn);
            }               
        }


что-то мне подсказывает что перемудрил
...
Рейтинг: 0 / 0
16.11.2011, 06:11:45
    #37528458
Volochkova
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Построение дерева
Вот вам ссылка в помощь.
деревья.
...
Рейтинг: 0 / 0
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Построение дерева / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]