private void GetBill()
    {
        var controller = new WaiterController();
        var data = controller.GetBill(int.Parse(ActiveBills.SelectedValue));
        BillToSplit.Value = data.BillID.ToString();

        // Set the original bill items
        OriginalBillItems.DataSource = data.Items;
        OriginalBillItems.DataBind();

        // empty out other bill
        NewBillItems.DataSource = null;
        NewBillItems.DataBind();
    }
    protected void SplitBill_Click(object sender, EventArgs e)
    {
        // Get the original bill items
        List<OrderItem> originalItems = new List<OrderItem>();
        foreach(GridViewRow row in OriginalBillItems.Rows)
        {
            var qtyLabel = row.FindControl("Quantity") as Label;
            var nameLabel = row.FindControl("Name") as Label;
            var priceLabel = row.FindControl("Price") as Label;
            originalItems.Add(new OrderItem()
                {
                    ItemName = nameLabel.Text,
                    Quantity = int.Parse(qtyLabel.Text),
                    Price = decimal.Parse(priceLabel.Text)
                });
        }

        // Get the new bill items
        List<OrderItem> newBillItems = new List<OrderItem>();
        foreach (GridViewRow row in NewBillItems.Rows)
        {
            var qtyLabel = row.FindControl("Quantity") as Label;
            var nameLabel = row.FindControl("Name") as Label;
            var priceLabel = row.FindControl("Price") as Label;
            newBillItems.Add(new OrderItem()
            {
                ItemName = nameLabel.Text,
                Quantity = int.Parse(qtyLabel.Text),
                Price = decimal.Parse(priceLabel.Text)
            });
        }

        // Call the BLL to split the bill
        int billid = int.Parse(BillToSplit.Value); // from our HiddenField

        WaiterController controller = new WaiterController();
        controller.SplitBill(billid, originalItems, newBillItems);
    }
    protected void SplitBill_Click(object sender, EventArgs e)
    {
        // Get the original bill items
        List<OrderItem> originalItems = new List<OrderItem>();
        foreach(GridViewRow row in OriginalBillItems.Rows)
        {
            var qtyLabel = row.FindControl("Quantity") as Label;
            var nameLabel = row.FindControl("ItemName") as Label;
            var priceLabel = row.FindControl("Price") as Label;
            originalItems.Add(new OrderItem()
                {
                    ItemName = nameLabel.Text,
                    Quantity = int.Parse(qtyLabel.Text),
                    Price = decimal.Parse(priceLabel.Text)
                });
        }

        // Get the new bill items
        List<OrderItem> newBillItems = new List<OrderItem>();
        foreach (GridViewRow row in NewBillItems.Rows)
        {
            var qtyLabel = row.FindControl("Quantity") as Label;
            var nameLabel = row.FindControl("ItemName") as Label;
            var priceLabel = row.FindControl("Price") as Label;
            newBillItems.Add(new OrderItem()
            {
                ItemName = nameLabel.Text,
                Quantity = int.Parse(qtyLabel.Text),
                Price = decimal.Parse(priceLabel.Text)
            });
        }

        // Call the BLL to split the bill
        int billId = int.Parse(BillToSplit.Value); // from our HiddenField

        WaiterController controller = new WaiterController();
        controller.SplitBill(billId, originalItems, newBillItems);

        ActiveBills.DataBind(); // Refresh the drop-down
        OriginalBillItems.DataSource = null;
        OriginalBillItems.DataBind();
        NewBillItems.DataSource = null;

        NewBillItems.DataBind();
        // Probably should include a message to the user about the new bill.....
    }