/************************************************************************************************************ STATISCHE METHODEN internal bedeutet, dass sie nur von Klassen aus BO_Freelancetool (aus dem eigenem Namespace) aufgerufen werden können - also nicht direkt aus dem PL Die Methoden sind im BO_Freelancetool-Objekt, damit der BO-Programmierer alle SQL-Statements, die Kunden betreffen, an einer Stelle hat Der PL-Programmierer sieht diese Implementation aber nicht. Er sieht die Methoden, von wo aus er diese Objekte "bekommt" (also entsprechend der Navigability). Man hätte diese Methoden technisch aber problemlos auch in die cMain geben können! */ // Hilfsfunktion für die beiden unteren Methoden private static Customers fillCustomerFromSQLDataReader(SqlDataReader reader) { Customers oneCustomer = new Customers(); oneCustomer.id = reader.GetString(0); oneCustomer.name = reader.GetString(1); oneCustomer.mail = reader.GetString(2); oneCustomer.phone = reader.GetString(3); return oneCustomer; }
protected void Page_Load(object sender, EventArgs e) { lblError.Text = ""; if (!IsPostBack) { currentID = (string)Session["id"]; //wurde beim Aufruf übertragen if (currentID != "") { //Objekt laden und Werte setzen currentCustomer = Main.getCustomerByID(currentID); if (currentCustomer != null) { //kopiere die Properties des Objekts in die Felder der Maske //lblID.Text = currentProject.id; txtNameCustomer.Text = currentCustomer.name; txtTelCustomer.Text = currentCustomer.phone; txtMailCustomer.Text = currentCustomer.mail; Session["Customer"] = currentCustomer; //Projektobjekt in Session speichern btnDeleteCustomer.Visible = true; tblNewAdress.Visible = true; } else { lblError.Text = "Kunde nicht gefunden - Sie können einen neuen Kunden anlegen!"; btnDeleteCustomer.Visible = false; tblNewAdress.Visible = false; Session["Customer"] = Main.newCustomer(); //neues leeres Kundenobjekt } } else { //leere ID? Dann ist das ein neuer Kunde btnDeleteCustomer.Visible = false; tblNewAdress.Visible = false; currentCustomer = Main.newCustomer(); Session["Customer"] = currentCustomer; //neues leeres Projektobjekt } } else currentCustomer = (Customers)Session["Customer"]; if (currentCustomer != null) { allAdresses = currentCustomer.getAdresses; GVAdresses.DataSource = allAdresses; GVAdresses.DataBind(); //dadurch wirds angezeigt } }
// Laden aller Adressen als Liste von Objekten für einen bestimmten Kunden - Funktion wird von Customers aufgerufen! internal static List<Adresses> LoadAdressesForCustomer(Customers theCustomer) { SqlCommand cmd = new SqlCommand("select id, city, zip, street, nr, customerID from Adresses where customerID = @customerID", Main.GetConnection()); cmd.Parameters.Add(new SqlParameter("customerID", theCustomer.id)); SqlDataReader reader = cmd.ExecuteReader(); List<Adresses> allAdresses = new List<Adresses>(); //initialisiere lehre Liste von Adressen while (reader.Read()) { Adresses oneAdress = new Adresses(); oneAdress.id = reader.GetString(0); oneAdress.city = reader.GetString(1); oneAdress.zip = reader.GetString(2); oneAdress.street = reader.GetString(3); oneAdress.nr = reader.GetString(4); oneAdress.customerID = reader.GetString(5); allAdresses.Add(oneAdress); } return allAdresses; }