//----------------------------------------------------------------------------------------------
        private void frmAddOrderCustomer_Load(object sender, EventArgs e)
        {
            //make order list
            ord = new BindingList <OrderDetails>();

            //add customers to the combobox
            ClassLibrary.Customer customer = new ClassLibrary.Customer();
            dsCustomer = customer.GetAll();
            dtCustomer = dsCustomer.Tables[0];
            cmbCustomers.DataSource    = dtCustomer;
            cmbCustomers.DisplayMember = "CUSTOMER_name";
            cmbCustomers.ValueMember   = "CUSTOMER_id";

            //add products to the combobox
            ClassLibrary.Product product = new ClassLibrary.Product();
            dsProduct = product.GetAll();
            dtProduct = dsProduct.Tables[0];
            cmbProducts.DataSource    = dtProduct;
            cmbProducts.DisplayMember = "PRODUCT_name";

            //ADDING MODE
            if (drOrder == null)
            {
                dateTimePicker1.Enabled = false;
            }
            //EDITING MODE
            else
            {
                //if orderid is in the sorder table
                ClassLibrary.SupplierOrder sorder = new ClassLibrary.SupplierOrder();
                sorder.OrderId = Convert.ToInt32(drOrder.ItemArray[0]);
                DataTable dt = sorder.GetSorderByOrderId().Tables[0];

                //disables forms items
                if (dt.Rows.Count != 0)
                {
                    MakeOrderUnEditable();
                    saveDeliveryDate        = true;
                    dateTimePicker1.Enabled = true;
                }

                //select the customer combobox
                string custId = drOrder.ItemArray[1].ToString();
                try
                {
                    cmbCustomers.SelectedIndex = cmbCustomers.FindStringExact(custId);
                }
                catch (Exception ex)
                {
                }
                //display date
                dateTimePicker1.Text = drOrder.ItemArray[5].ToString();

                //display total price
                totalPrice     = Convert.ToDecimal(drOrder.ItemArray[3]);
                txtPrice.Text  = String.Format("{0:c}", totalPrice);
                txtStatus.Text = drOrder.ItemArray[4].ToString();

                //display orderdetails
                ClassLibrary.CustomerOrderDetails orderdetails = new ClassLibrary.CustomerOrderDetails();
                orderdetails.OrderId = Convert.ToInt32(drOrder.ItemArray[0]);

                DataTable thisTable = orderdetails.GetOrderDetailsByOrderId().Tables[0];

                try
                {
                    foreach (DataRow row in thisTable.Rows)
                    {
                        string price = String.Format("{0:c}", Convert.ToDecimal(row.ItemArray[3]));
                        //add to generic list
                        ord.Add(new OrderDetails
                        {
                            ProductID   = Convert.ToInt32(row.ItemArray[0]),
                            ProductName = row.ItemArray[1].ToString(),
                            Quantity    = Convert.ToInt32(row.ItemArray[2]),
                            Price       = price,
                        });
                    }
                    dataGridView1.DataSource = ord;
                }
                catch (Exception ex)
                {
                }
            }
        }
        private void btnSaveToDatabase_Click(object sender, EventArgs e)
        {
            ClassLibrary.CustomerOrder order = new ClassLibrary.CustomerOrder();
            DataRowView selectedCustomer     = (DataRowView)cmbCustomers.SelectedItem;

            //add order
            order.CustId     = (int)selectedCustomer.Row.ItemArray[0];
            order.OrderDate  = Convert.ToDateTime(cmbDate.Text);
            order.TotalPrice = totalPrice;
            order.Status     = txtStatus.Text;

            //ADDING MODE
            if (drOrder == null)
            {
                int lastInsertedId = order.Add();

                //add OrderDetails
                ClassLibrary.CustomerOrderDetails orderdetails = new ClassLibrary.CustomerOrderDetails();

                orderdetails.OrderId = lastInsertedId;
                foreach (OrderDetails o in ord)
                {
                    orderdetails.Price     = Convert.ToDecimal(o.Price.ToString().Replace("$", ""));
                    orderdetails.ProductId = o.ProductID;
                    orderdetails.Quantity  = o.Quantity;
                    orderdetails.AddOrderDetails();
                }
            }

            //EDITING MODE
            else
            {
                try
                {
                    if (dateTimePicker1.Enabled == true)
                    {
                        order.DateDelivery = Convert.ToDateTime(dateTimePicker1.Text);
                    }
                    else
                    {
                        order.DateDelivery = DateTime.MinValue;
                    }
                    order.Id = Convert.ToInt32(drOrder.ItemArray[0]);
                    order.Update();

                    //add OrderDetails
                    ClassLibrary.CustomerOrderDetails orderdetails = new ClassLibrary.CustomerOrderDetails();
                    orderdetails.OrderId = order.Id;
                    orderdetails.Delete();

                    foreach (OrderDetails o in ord)
                    {
                        orderdetails.ProductId = o.ProductID;
                        orderdetails.Quantity  = o.Quantity;
                        orderdetails.AddOrderDetails();
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message.ToString());
                }
            }

            frmDisOrder.DisplayAllOrders();
            Close();
        }