//Смотрим наличие PopUp выбора типа кола 0.33/0.5/1 private void PopUpChildren(string tag, Point point) { //tag - id но оно может несоответствовать меню, так как в словарь засунули с новым ид //надо смотреть словарь и проверять соответствие клюсч-ид, если разные - возвращать ид меню iD = tag; //Сохраняем ключ словаря tag = SeeDishNewNameId(tag, out _flagOld); //Получаем спмсок модификаторов из меню List<Modifikator> currentModifikators = GetModifikators(tag); //Смотрим Dish по iD currentModifikators = _flagOld ? GetXmlModifikators(tag, currentModifikators) : GetDishModifikators(iD, currentModifikators); var selForm = new PopUpMenu(DG.Device, point, currentModifikators); selForm.PopupCancelled += new EventHandler(SelFormPopupCancelled); //selForm.Hidden += new EventHandler(SelFormHidden); selForm.PostbackComplete += new EventHandler(ShowCheckboxPostbackComplete); //selForm.Tag = group; selForm.Show(); }
//Модернизируем _order.Dish void HandlePopUpInput(PopUpMenu selForm) { List<Modifikator> _currentModifikators; //todo CLONE Тут не получим модификаторы по клону bool flagClone; var id = SeeDishNewNameId(iD, out flagClone); //Смотрим по правильному Ид и для клона и для сингла _currentModifikators = GetModifikators(id); int pointElement = 0; if (!_flagOld) //блюдо новое и в Dish { //Берем по правильному iD var dish = _order.Dish[iD]; var count = 0; //Чистим старые модификаторы dish.Modifikators.Clear(); //Заносим новые foreach (var p in selForm.Checks) { if (p.Checked.ToString() == "CHECKED") dish.Modifikators.Add(new Modifikator { Name = _currentModifikators.ElementAt(count).Name, Id = _currentModifikators.ElementAt(count).Id, Check = true }); count++; } _order.Dish.Remove(iD); _order.Dish.Add(iD, dish); } else { //Удаляем модификаторы - старые try { pointElement = GetLineTag(_lineTag); while (DG.OrderTable.Descendants("СтрокаЗаказа").ElementAt(pointElement + 1).Attributes("Модификатор").First().Value == "Да") { DG.OrderTable.Descendants("СтрокаЗаказа").ElementAt(pointElement + 1).Remove(); } } catch (Exception) { } //Заносим новые var count = 0; foreach (var p in selForm.Checks) { if (p.Checked.ToString() == "CHECKED") { DG.OrderTable.Descendants("СтрокаЗаказа").ElementAt(pointElement).AddAfterSelf(new XElement("СтрокаЗаказа", new XAttribute("НомерСтроки", "99"), //Потом переименуем все new XAttribute("Товар", _currentModifikators.ElementAt(count).Name), new XAttribute("Модификатор", "Да"), new XAttribute("ТоварИД", _currentModifikators.ElementAt(count).Id))); }; count++; } } //Удаляем из системы обработчики selForm.PopupCancelled -= new EventHandler(SelFormPopupCancelled); selForm.Hidden -= new EventHandler(SelFormHidden); selForm.Destroy(); }