//По нажатию на меню public Item AddItem(ListCellButtonClickEventArgs e) { var c = new Item(); //Cells из меню, у них другой порядок !!!!! c.ItemLine.Add("1"); //Count c.ItemLine.Add(e.Item.Cells[0].Value.ToString()); //Name c.ItemLine.Add(e.Item.Cells[1].Value.ToString()); //Id c.ItemLine.Add(MenuXml.GetMarker(e.Item.Cells[1].Value.ToString()));//Marker //Блюдо может быть нажато повторно //тогда оно не полезет в Dictionary //будет исключение var value = new Specification { Count = 1, NameDish = e.Item.Cells[0].Value.ToString(), Marker = e.Item.TemplateName }; try { _order.Dish.Add(e.Item.Cells[1].Value.ToString(), value); } catch (Exception) { return null; } return c; }
private void ChangeCount(ListCellGestureEventArgs e, int count) { e.Item.Cells[0].Value = count.ToString(); var id = e.Item.Cells[2].Value.ToString(); var value = new Specification { Count = count, NameDish = e.Item.Cells[1].Value.ToString() }; //XML нет в Dish if (e.Item.Cells[2].Value.ToString().Length < 4) return; _order.Dish.Remove(id); _order.Dish.Add(id, value); }
//При нажатии в меню добавляем блюдо в чек private void AddLineToOrderScreen(string dish, string id, string count, bool print, bool addDish, bool children) { try { var marker = GetMarker(print,children); //Выходим, если стол красный "CALCULATE" if (DG.Calc && addDish) { MessageBox.Show(this.Device, "Этот стол рассчитан!", MessageBoxButtons.OKAY, null, null); return; } //Блюдо может быть нажато повторно //тогда оно не полезет в Dictionary //будет исключение. RecordSet нет с новым ключом, будем заносить программно var flagGiud = false; var guidKey = id; if (addDish) //Старые не заносим в Dish { //записываем id, будем использовать в GetPrice(id) var value = new Specification {Count = 1, NameDish = dish, Marker = marker, IdDish = id}; try { _order.Dish.Add(id, value); } catch (Exception) { //Надо засунуть в словарь повторно, если есть Модификатор if(!children) return; //Добавляем в List строя ключь Random guidKey = Guid.NewGuid().ToString(); _order.Dish.Add(guidKey, value); //todo Теряем Id flagGiud = true; } } //Программно var item = new ListItem(_lstOrders.Group.Definition); //Заполняем программно, так как есть дубли, а RecordSet c дублями не работает if (flagGiud || id.Length < 4) //id из xml { item.Cells[0].Value = count; item.Cells[1].Value = dish; //Если блюдо из старого чека, нас интересует не id, а НомерСтроки из Orders.xml //это будем отслеживать при нажатии и править DataGarcon.OrderTable //Cells[2] - используем для идентификации в заказе - это строка item.Cells[2].Value = id; item.Tag = guidKey; //Засовываем в Tag старый Ид или новое значение item.TemplateName = marker; _lstOrders.Group.Add(item); } //Через RecordSet только черные else { _lstOrders.Group.Append(this.RecordSets[marker + id]); } } catch (Exception) { FormMain.ConsolePrint("ERROR - нет в меню" + dish + " Lie = " + id); } }