private void GrdCostsAdd()
        {
            if (ValidateCostsFooter())
            {
                Page.Validate("costsDataAdd");

                if (Page.IsValid)
                {
                    int serviceId = 1;
                    int companyId = Int32.Parse(hdfCompanyId.Value);
                    string newPartNumber = ((TextBox)grdCosts.FooterRow.FindControl("tbxPartNumberNew")).Text.Trim();
                    string newPartName = ((TextBox)grdCosts.FooterRow.FindControl("tbxPartNameNew")).Text.Trim();
                    string newVendor = ((TextBox)grdCosts.FooterRow.FindControl("tbxVendorNew")).Text.Trim();
                    decimal newCost = Decimal.Round(Decimal.Parse(((TextBox)grdCosts.FooterRow.FindControl("tbxCostNew")).Text.Trim()), 2);

                    ServicesAddRequestCostInformation model = new ServicesAddRequestCostInformation(servicesAddRequestTDS);

                    model.Insert(serviceId, newPartNumber, newPartName, newVendor, newCost, false, companyId);

                    Session.Remove("serviceCostsDummyAddRequest");
                    Session["servicesAddRequestTDS"] = servicesAddRequestTDS;
                    Session["costInformationAddRequest"] = servicesAddRequestTDS.CostInformation;

                    // Calc TotalCost
                    tbxTotalCost.Text = Decimal.Round(model.GetTotalCost(serviceId, companyId), 2).ToString();

                    grdCosts.DataBind();
                    grdCosts.PageIndex = grdCosts.PageCount - 1;
                }
            }
        }
        // /////////////////////////////////////////////////////////////////////////////////////////////////////
        //
        // STEP2 - GENERAL INFORMATION
        //
        // ////////////////////////////////////////////////////////////////////////
        // STEP2 - GENERAL INFORMATION - EVENTS
        //
        protected void grdCosts_RowDeleting(object sender, GridViewDeleteEventArgs e)
        {
            // grdCosts Gridview, if the gridview is edition mode
            if (grdCosts.EditIndex >= 0)
            {
                grdCosts.UpdateRow(grdCosts.EditIndex, true);
            }

            // Delete laterals
            int serviceId = (int)e.Keys["ServiceID"];
            int refId = (int)e.Keys["RefID"];
            int companyId = Int32.Parse(hdfCompanyId.Value);

            ServicesAddRequestCostInformation model = new ServicesAddRequestCostInformation(servicesAddRequestTDS);
            model.Delete(serviceId, refId);

            // Store dataset
            Session["servicesAddRequestTDS"] = servicesAddRequestTDS;
            Session["costInformationAddRequest"] = servicesAddRequestTDS.CostInformation;

            // Calc TotalCost
            tbxTotalCost.Text = Decimal.Round(model.GetTotalCost(serviceId, companyId), 2).ToString();
        }
        protected void grdCosts_RowUpdating(object sender, GridViewUpdateEventArgs e)
        {
            Page.Validate("costsDataEdit");
            if (Page.IsValid)
            {
                int serviceId = (int)e.Keys["ServiceID"];
                int refId = (int)e.Keys["RefID"];
                int companyId = Int32.Parse(hdfCompanyId.Value);

                string partNumber = ((TextBox)grdCosts.Rows[e.RowIndex].Cells[2].FindControl("tbxPartNumber")).Text.Trim();
                string partName = ((TextBox)grdCosts.Rows[e.RowIndex].Cells[3].FindControl("tbxPartName")).Text.Trim();
                string vendor = ((TextBox)grdCosts.Rows[e.RowIndex].Cells[4].FindControl("tbxVendor")).Text.Trim();
                decimal cost = decimal.Parse(((TextBox)grdCosts.Rows[e.RowIndex].Cells[5].FindControl("tbxCost")).Text.Trim());

                // Update data
                ServicesAddRequestCostInformation model = new ServicesAddRequestCostInformation(servicesAddRequestTDS);
                model.Update(serviceId, refId, partNumber, partName, vendor, cost);

                // Store dataset
                Session["servicesAddRequestTDS"] = servicesAddRequestTDS;
                Session["costInformationAddRequest"] = servicesAddRequestTDS.CostInformation;

                // Calc TotalCost
                tbxTotalCost.Text = Decimal.Round(model.GetTotalCost(serviceId, companyId), 2).ToString();
            }
            else
            {
                e.Cancel = true;
            }
        }
        private void UpdateDatabase()
        {
            DB.Open();
            DB.BeginTransaction();
            try
            {
                int companyId = Int32.Parse(hdfCompanyId.Value);
                int loginId = Convert.ToInt32(Session["loginID"]);

                EmployeeGateway employeeGateway = new EmployeeGateway(new DataSet());
                int employeeId = employeeGateway.GetEmployeIdByLoginId(loginId);
                DateTime dateTime_ = DateTime.Now;

                ServicesAddRequestBasicInformation servicesAddRequestBasicInformation = new ServicesAddRequestBasicInformation(servicesAddRequestTDS);
                int? serviceId = servicesAddRequestBasicInformation.Save(dateTime_, employeeId, companyId);

                // Save costs information
                if (serviceId.HasValue)
                {
                    hdfNewServiceId.Value = serviceId.ToString();
                    ServicesAddRequestCostInformation servicesAddRequestCostInformation = new ServicesAddRequestCostInformation(servicesAddRequestTDS);
                    servicesAddRequestCostInformation.Save((int)serviceId, companyId);
                }

                DB.CommitTransaction();

                // Store datasets
                servicesAddRequestTDS.AcceptChanges();
                Session["servicesAddRequestTDS"] = servicesAddRequestTDS;

            }
            catch (Exception ex)
            {
                DB.RollbackTransaction();

                string url = string.Format("./../../error_page.aspx?error={0}", ex.Message.Replace('\n', ' '));
                Response.Redirect(url);
            }
        }