peachplayer Geschrieben 8. September 2019 Melden Share Geschrieben 8. September 2019 Hallo Leute das problem istfolgendes: ich möchte eine leere Daten-liste mit neuen Einträgen via Inputfields befüllen...leider klappt das bisher nur mit schon bestehened Datensätzen... ich kann also keine neue Daten-liste mit Benutzereingaben anfangen! Ich benütze folgenden Code: public void NeuerEintragHinzu() { Dünger neuerEintrag = ZufallsEintrag(); liste1.Add(neuerEintrag); ListeSpeichern(); } Dünger ZufallsEintrag() { float Fläche = 0.0f; float Erlös = 0.0f; dataXml = XElement.Load(GetPath2()); IEnumerable<XElement> data = dataXml.Elements(); k = 0; foreach (XElement item in data) { //string Datum = item.Element("Datum").Value; int Nummer = int.Parse(item.Element("Nummer").Value); string Kultur = item.Element("Kultur").Value; Fläche = float.Parse(item.Element("Fläche").Value); int index1 = dropdown1.value; string Parzellenname = dropdown1.options[index1].text; // Code der pro Parzellenname ausgeführt wird // parzelle enthält alle Einträge der jeweiligen Parzelle switch (Kultur) { case "Wintergerste": { ertrag = 5000.0f; break; } case "Winterweizen": { ertrag = 7000.0f; break; } case "Mais": { ertrag = 10000.0f; break; } case "Soja": { ertrag = 3300.0f; break; } case "Raps": { ertrag = 3800.0f; break; } case "Zuckerrüben": { ertrag = 60000.0f; break; } default: Debug.Log("Der String Kultur lautet >" + Kultur + "< und ist in meiner Abfrage nicht vorhanden!"); break; } Debug.Log(Fläche); int index2 = dropdown2.value; string Düngersorte = dropdown2.options[index2].text; float Menge = float.Parse(MengeEingabe.text); float Kosten = Menge * 0.01f * 80.0f; string Datum = DatumEingabe.text; if (DatumEingabe.text == "") Datum = System.DateTime.Now.ToString("dd.MM.yyyy"); Dünger neuerEintrag = new Dünger(); neuerEintrag.Nummer = Nummer; neuerEintrag.Parzellenname = Parzellenname; neuerEintrag.Menge = Menge; neuerEintrag.Kosten = Kosten; neuerEintrag.Fläche = Fläche; neuerEintrag.Erlös = Fläche * 0.5f * ertrag * 0.01f; neuerEintrag.Düngersorte = Düngersorte; neuerEintrag.Kultur = Kultur; if (DatumEingabe.text == "") Datum = System.DateTime.Now.ToString("dd.MM.yyyy"); neuerEintrag.Datum = Datum; return neuerEintrag; } return null; } Gruss, peachplayer Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
JoeBlack Geschrieben 1. Dezember 2019 Melden Share Geschrieben 1. Dezember 2019 AHllo, zuerst: zeige deinen Code enger, sonst verliert man auf mehrere Bildschirm die Orientierung: float Fläche = 0.0f; float Erlös = 0.0f; dataXml = XElement.Load(GetPath2()); IEnumerable<XElement> data = dataXml.Elements(); k = 0; foreach (XElement item in data) { //string Datum = item.Element("Datum").Value; int Nummer = int.Parse(item.Element("Nummer").Value); string Kultur = item.Element("Kultur").Value; Fläche = float.Parse(item.Element("Fläche").Value); float index1 = dropdown1.value; string Parzellenname = dropdown1.options[index1].text; // Code der pro Parzellenname ausgeführt wird // parzelle enthält alle Einträge der jeweiligen Parzelle switch (Kultur) { case "Wintergerste": { ertrag = 5000.0f; break; } case "Winterweizen": { ertrag = 7000.0f; break; } case "Mais": { ertrag = 10000.0f; break; } case "Soja": { ertrag = 3300.0f; break; } case "Raps": { ertrag = 3800.0f; break; } case "Zuckerrüben": { ertrag = 60000.0f; break; } default: Debug.Log("Der String Kultur lautet >" + Kultur + "< und ist in meiner Abfrage nicht vorhanden!"); break; } Debug.Log(Fläche); int index2 = dropdown2.value; //string Düngersorte = dropdown2.options[index2].text; float Menge = float.Parse(MengeEingabe.text); float Kosten = Menge * 0.01f * 80.0f; string Datum = DatumEingabe.text; if (DatumEingabe.text == "") Datum = System.DateTime.Now.ToString("dd.MM.yyyy"); Dünger neuerEintrag = new Dünger(); neuerEintrag.Nummer = Nummer; neuerEintrag.Parzellenname = Parzellenname; neuerEintrag.Menge = Menge; neuerEintrag.Kosten = Kosten; neuerEintrag.Fläche = Fläche; neuerEintrag.Erlös = Fläche * 0.5f * ertrag * 0.01f; neuerEintrag.Düngersorte = Düngersorte; neuerEintrag.Kultur = Kultur; if (DatumEingabe.text == "") Datum = System.DateTime.Now.ToString("dd.MM.yyyy"); neuerEintrag.Datum = Datum; return neuerEintrag; } return null; Ich würde den Code auch in drei Submethoden aufteilen, damit es übersichtlicher wird. Dann zur Frage: In diesem Code erstellst Du korrekt einen neuen Datensatz für die angegebene Liste. Das funktioniert sicher auch. Aber Du erstellst kein neues Inputfield. Das kannst Du anhand der Liste dann mit Initiate. Oder habe ich das falsch verstanden? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.