private void ZutatenSpeichern(Rezept rezept, Panel rezeptAbteilungPanel, Rezeptabteilung rezeptAbteilung)
        {
            var zutatCtrlList = new List<TextBox>();
            var mengeCtrlList = new List<TextBox>();
            var einheitCtrlList = new List<DropDownList>();

            //Control Listen erstellen
            foreach (Control control in rezeptAbteilungPanel.Controls)
            {
                if (control.ID != null)
                {
                    if (control.ID.Contains(Helper.REZEPBEARBEITEN_IDENT_EINHEIT))
                        einheitCtrlList.Add((DropDownList)control);
                    else if (control.ID.Contains(Helper.REZEPBEARBEITEN_IDENT_MENGE))
                        mengeCtrlList.Add((TextBox)control);
                    else if (control.ID.Contains(Helper.REZEPBEARBEITEN_IDENT_ZUTAT))
                        zutatCtrlList.Add((TextBox)control);
                }
            }

            //Set RezeptAbteilung for existing Zutaten that have no RezeptAbteilung assigned, yet
            if(rezeptAbteilung != null && rezeptAbteilung.ID == 0 && zutatCtrlList.Count(d => !d.ID.Contains(Helper.REZEPBEARBEITEN_IDENT_NEU)) > 0)
                rezept.RezeptZutats.Select(d => { if (d.RezeptabteilungID == null) { d.Rezeptabteilung = rezeptAbteilung; } return d; }).ToList();

            //Ggf. neue Zutat einfügen
            NeueZutatenEinfügen(rezept, zutatCtrlList, mengeCtrlList, einheitCtrlList, rezeptAbteilung);

            //Zutaten aktualisieren
            this.BestehendeZutatenAktualisieren(rezept, zutatCtrlList, mengeCtrlList, einheitCtrlList);
        }
        private Rezeptabteilung RezeptabteilungSpeichern(Rezept rezept, Panel rezeptAbteilungPanel, rherzog_70515_rzvwContext db)
        {
            var rezeptAbteilungID = Helper.FindIdOnDynamicControl(rezeptAbteilungPanel);
            Rezeptabteilung rezeptAbteilung = null;

            //Create Rezeptabteilung
            var rezeptAbteilungTextbox = (TextBox)Helper.FindControl(rezeptAbteilungPanel, Helper.REZEPBEARBEITEN_IDENT_REZEPABTEILUNG + Helper.REZEPBEARBEITEN_IDENT_NEU);
            if (rezeptAbteilungID == null && rezeptAbteilungTextbox != null && rezeptAbteilungTextbox.Text != String.Empty)
            {
                rezeptAbteilung = new Rezeptabteilung { Name = rezeptAbteilungTextbox.Text };
            }

            //Rename existing Rezeptabteilung
            rezeptAbteilungTextbox = (TextBox)Helper.FindControl(rezeptAbteilungPanel, Helper.REZEPBEARBEITEN_IDENT_REZEPABTEILUNG);
            if (rezeptAbteilungID != null && rezeptAbteilungTextbox != null)
            {
                rezeptAbteilung = db.Rezeptabteilungs.First(d => d.ID == rezeptAbteilungID);
                rezeptAbteilung.Name = rezeptAbteilungTextbox.Text;
            }

            return rezeptAbteilung;
        }
        /// <summary>
        /// Display the give Rezeptabteilung
        /// </summary>
        private void DisplayRezeptabteilungTextbox(Rezeptabteilung rezeptAbteilung, Panel rezeptAbteilungPanel, int? panelNumber, int rezeptAbteilungNr)
        {
            var textbox = new TextBox { Width = RezeptabteilungFeldBreite };

            if (rezeptAbteilung == null)
            {
                //Leere Textbox anzeigen (Rezeptabteilung kann hinzugefügt werden)
                textbox.ID = Helper.REZEPBEARBEITEN_IDENT_REZEPABTEILUNG + Helper.REZEPBEARBEITEN_IDENT_NEU + panelNumber;
            }
            else
            {
                //Textbox mit Rezeptnamen einfügen
                textbox.ID = Helper.REZEPBEARBEITEN_IDENT_REZEPABTEILUNG + rezeptAbteilung.ID;
                textbox.Text = rezeptAbteilung.Name;
            }

            if (rezeptAbteilungNr != 1)
            {
                var label = new Label { Text = "<br/>" };
                rezeptAbteilungPanel.Controls.Add(label);
            }

            rezeptAbteilungPanel.Controls.Add(textbox);

            //Delete button for Rezeptabteilung
            if (rezeptAbteilung != null)
            {
                var imageButton = new ImageButton { ID = Helper.REZEPBEARBEITEN_IDENT_REZEPABTEILUNG_DELETE + rezeptAbteilung.ID, ImageUrl = "~/images/delete-icon_small.png", ImageAlign = ImageAlign.Middle };
                imageButton.Click += ImageButtonRezeptAbteilungDeleteClick;
                rezeptAbteilungPanel.Controls.Add(new Literal { Text = "&nbsp;" });
                rezeptAbteilungPanel.Controls.Add(imageButton);
            }

            Helper.InsertLineBreak(rezeptAbteilungPanel);
        }
        private void NeueZutatenEinfügen(Rezept rezept, IEnumerable<TextBox> zutatCtrlList, IEnumerable<TextBox> mengeCtrlList, IEnumerable<DropDownList> einheitCtrlList, Rezeptabteilung rezeptAbteilung)
        {
            //Neue eingefügt Zutaten ermitteln
            var zutatCtrlListNew = zutatCtrlList.Where(d => d.ID.Contains(Helper.REZEPBEARBEITEN_IDENT_NEU)).ToList();
            var mengeCtrlListNew = mengeCtrlList.Where(d => d.ID.Contains(Helper.REZEPBEARBEITEN_IDENT_NEU)).ToList();
            var einheitCtrlListNew = einheitCtrlList.Where(d => d.ID.Contains(Helper.REZEPBEARBEITEN_IDENT_NEU)).ToList();

            //wenn eine Eingabe erfolgt ist
            if (zutatCtrlListNew.Count != 0 && mengeCtrlListNew.Count != 0)
            {
                //jede neue Zutat dem Rezept hinzufügen
                foreach (var zutatCtrlNew in zutatCtrlListNew)
                {
                    NeueZutatEinfügen(rezept, zutatCtrlNew, einheitCtrlListNew, mengeCtrlListNew, rezeptAbteilung);
                }
            }
        }
        private static void NeueZutatEinfügen(Rezept rezept, TextBox zutatCtrlNew, IEnumerable<DropDownList> einheitCtrlListNew, IEnumerable<TextBox> mengeCtrlListNew, Rezeptabteilung rezeptAbteilung)
        {
            var idNummer = Helper.FindIdOnDynamicNewControl(zutatCtrlNew);
            //zugeh. Einheit suchen
            var einheitCtrlNew = einheitCtrlListNew.First(d => d.ID.Contains(""+idNummer));

            //zugeh. Menge suchen
            var mengeCtrlNew = mengeCtrlListNew.First(d => d.ID.Contains(""+idNummer));
            if (!string.IsNullOrEmpty(zutatCtrlNew.Text))
            {
                var rezZutat = new RezeptZutat { Menge = mengeCtrlNew.Text, Rezeptabteilung = rezeptAbteilung };
                var zutat = new Zutat {Name = zutatCtrlNew.Text};
                rezZutat.Zutat = zutat;
                if(einheitCtrlNew.SelectedIndex != 0)
                    rezZutat.EinheitID = Int32.Parse(einheitCtrlNew.SelectedItem.Value);
                rezept.RezeptZutats.Add(rezZutat);
            }
        }