// Кнопка удаления элемента дерева
        private void deleteButton_Click(object sender, EventArgs e)
        {
            var delTarget = specTree.SelectedNode;

            if (delTarget == null) return;

            if (delTarget.Parent == null)
            {
                MessageBox.Show(Resources.AdministrationWindows_deleteButton_Click_Для_удаления_изделия_воспользуйтесь_меню_Журнал_изделий);
                return;
            }

            if (delTarget.Nodes.Count != 0)
            {
                var delForm = new DeleteFromTree();
                DialogResult dr = delForm.ShowDialog();
                if (dr == DialogResult.Cancel) return;
            }

            using (var context = new ProductTrackerEntities())
            {
                try
                {
                    var delProduct = context.product.First(product => product.name == delTarget.Text);
                    if (delProduct.typeID.Equals(delTarget.Tag))
                    {
                        var prodInTree = delProduct.productTree;

                        context.productTree.Remove(prodInTree);
                        context.SaveChanges();
                        context.product.Remove(delProduct);
                        context.SaveChanges();
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
            }
            specTree.Nodes.Remove(delTarget);
        }
        // Для обеспечения работоспособности переименования объекта
        private void specTree_AfterLabelEdit(object sender, NodeLabelEditEventArgs e)
        {
            if (e.Label != null)
            {
                e.Node.EndEdit(false);
            }

            using (var context = new ProductTrackerEntities())
            {
                try
                {
                    var renameProduct = context.product.First(product => product.name == TargetNode.Text);
                    if (renameProduct != null)
                    {
                        renameProduct.name = e.Label;
                       /* renameProduct.id = renameProduct.id;
                        renameProduct.productAttribute = renameProduct.productAttribute;
                        renameProduct.productTree = renameProduct.productTree;
                        renameProduct.productType = renameProduct.productType;
                        renameProduct.typeID = renameProduct.typeID;*/
                    }
                    context.SaveChanges();
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
            }
        }
Beispiel #3
0
        // Создает дочерний объект к выбранному объекту дерева
        private void createButton_Click(object sender, EventArgs e)
        {
            if (createTypeChose.Text == String.Empty)
            {
                MessageBox.Show(Resources.AdministrationWindows_createNewButton_Click_Тип_элемента_не_выбран,
                    Resources.error_operation_msg);
                return;
            }

            if (createNameBox.Text == String.Empty)
            {
                MessageBox.Show(Resources.AdministrationWindows_createNewButton_Click_Не_указано_имя_объекта,
                    Resources.error_operation_msg);
                return;
            }

            var newProduct = new product();

            using (var context = new ProductTrackerEntities())
            {
                try
                {
                    var query = from type in context.productType
                                where type.typeName == createTypeChose.Text
                                select type.typeID;

                    foreach (var type in query.Take(1))
                    {
                        newProduct.name = createNameBox.Text;
                        newProduct.typeID = type;
                        foreach (TreeNode node in addTarget.Nodes)
                        {
                            if (node.Text.Equals(createNameBox.Text) && node.Tag.Equals(newProduct.typeID))
                            {
                                MessageBox.Show(Resources.AdministrationWindows_createNewButton_Click_Такой_элемент_уже_создан_в_структуре_);
                                return;
                            }
                        }

                    }

                    context.product.Add(newProduct);
                    context.SaveChanges();

                    var queryProd = from pr in context.product
                                    where pr.name == addTarget.Text
                                    select pr;
                    var parent = new product();

                    foreach (var p in queryProd.Take(1))
                    {
                        parent = p;
                    }

                    var pt = new productTree
                    {
                        productID = newProduct.id,
                        parentID = parent.id,
                        product = newProduct
                    };

                    context.productTree.Add(pt);
                    context.SaveChanges();
                }
                catch (Exception mes)
                {
                    MessageBox.Show(mes.Message);
                }
            }
            aw.ExpandTree();
            Close();
            AddProduct.Text = newProduct.name;
            AddProduct.Tag = newProduct.typeID;
        }