예제 #1
0
        // Добавление коренного компонента
        private void NewRootComponent(object sender, RoutedEventArgs e)
        {
            // Использование диалога при переименовании файла для создание нового корневого компонента - используя другой конструктор класса
            Dialog_RenameComponent dialog_NewRootComponent = new Dialog_RenameComponent(componentsAllQuery);

            dialog_NewRootComponent.Owner = Window.GetWindow(this);
            dialog_NewRootComponent.ShowDialog();

            if (dialog_NewRootComponent.componentNewName != null)
            {
                // Получение максимального id в таблице
                // Индекс компонента должен быть больше, чем все предыдущие, во избежание перезаписи таблицы
                // Id нового компонента будет задано автоматически при db.ComponentsUniques.InsertOnSubmit(...)
                long currentAllComponentsMaxID = componentsAllQuery.AsQueryable().Cast <ComponentsAll>().Max(t => t.Id);

                // Создание нового компонента таблицы ComponentsAll
                ComponentsAll newComponentAll = new ComponentsAll()
                {
                    // Индекс компонента должен быть больше, чем все предыдущие, во избежание перезаписи таблицы
                    Id          = currentAllComponentsMaxID + 1,
                    ParentId    = 0,
                    ComponentId = 0,
                    Name        = dialog_NewRootComponent.componentNewName,
                    Amount      = 1
                };

                // Сохранение изменений в БД
                db.ComponentsAlls.InsertOnSubmit(newComponentAll);
                db.SubmitChanges();

                // Добавление нового элемента TreeViewItem по новому компоненту
                TreeViewItem newitem = CreateNewItemFromComponent(newComponentAll);

                // Добавление нового элемента TreeViewItem в корень treeView
                treeView.Items.Add(newitem);
            }

            // Сохранение изменений в БД
            db.SubmitChanges();

            // Сворачивание TreeView
            TreeViewCollapseAll();

            // Разворачивание компонентов первого уровня
            foreach (TreeViewItem item in treeView.Items)
            {
                item.IsExpanded = true;
            }
        }
예제 #2
0
        // Переименование компонента
        private void RenameComponent(object sender, RoutedEventArgs e)
        {
            // Получение выбранного узла дерева
            TreeViewItem selectedItem = (TreeViewItem)treeView.SelectedItem;

            // Получение компонента по тегу данного узла
            ComponentsAll currentComponent = componentsAllQuery.AsQueryable().Cast <ComponentsAll>().Where(x => x.Id == (long)selectedItem.Tag).First();

            // Создание диалога с изменением компонента
            Dialog_RenameComponent dialog_RenameComponent = new Dialog_RenameComponent(componentsUniqueQuery, currentComponent);

            dialog_RenameComponent.Owner = Window.GetWindow(this);
            dialog_RenameComponent.ShowDialog();

            // Объект из диалога существует
            if (dialog_RenameComponent.componentNewName != null)
            {
                // Дочерний элемент treeView
                if (currentComponent.ParentId != 0)
                {
                    // Нахождение уникального компонента по ComponentId текущего компонента и замена в нем имени
                    componentsUniqueQuery.AsQueryable().Cast <ComponentsUnique>()
                    .Where(x => x.Id == currentComponent.ComponentId).First().Name = dialog_RenameComponent.componentNewName;
                }
                // Корневой элемент treeView
                else
                {
                    // Нахождение компонента по старому имени и замена в нем имени
                    componentsAllQuery.AsQueryable().Cast <ComponentsAll>()
                    .Where(x => x.Name == dialog_RenameComponent.componentOldName).First().Name = dialog_RenameComponent.componentNewName;
                }
            }

            // Сохранение изменений в БД
            db.SubmitChanges();

            // Сворачивание TreeView
            TreeViewCollapseAll();

            // Лист Id родительских компонентов данного компонента
            List <long> parensIDList = new List <long>();

            parensIDList = GetComponentsParentsIds(currentComponent, ref parensIDList, false).OrderBy(u => u).ToList();
            // Обновление treeView с раскрытием до текущего компонента
            RefreshTreeView(parensIDList);
        }