private void dgvFasi_CellEndEdit(object sender, DataGridViewCellEventArgs e)
        {
            try
            {
                if (_disabilitaEdit)
                {
                    return;
                }
                lblMessaggio.Text = string.Empty;

                decimal idFase            = (decimal)dgvFasi.Rows[e.RowIndex].Cells[0].Value;
                string  codice            = (string)dgvFasi.Rows[e.RowIndex].Cells[1].Value;
                string  descrizione       = (string)dgvFasi.Rows[e.RowIndex].Cells[2].Value;
                decimal idReparto         = ((RepartoModel)dgvFasi.Rows[e.RowIndex].Cells[3].Value).IdReparto;
                decimal margine           = (decimal)dgvFasi.Rows[e.RowIndex].Cells[4].Value;
                decimal costo             = (decimal)dgvFasi.Rows[e.RowIndex].Cells[5].Value;
                bool    includiPreventivo = (bool)dgvFasi.Rows[e.RowIndex].Cells[6].Value;
                decimal idEsterna         = (decimal)dgvFasi.Rows[e.RowIndex].Cells[7].Value;
                string  tabellaEsterna    = (string)dgvFasi.Rows[e.RowIndex].Cells[8].Value;

                if (string.IsNullOrEmpty(descrizione))
                {
                    lblMessaggio.Text = "La descrizone non può essere vuota";
                    return;
                }

                if (string.IsNullOrEmpty(codice))
                {
                    lblMessaggio.Text = "Il codice non può essere vuoto";
                    return;
                }

                Anagrafica a = new Anagrafica();
                lblMessaggio.Text = a.ModificaFase(idFase, codice, descrizione, idReparto, margine, costo, includiPreventivo, idEsterna, tabellaEsterna, _utenteConnesso);
                // CaricaGrigliaFasi(idReparto);
                BeginInvoke(new MethodInvoker(() => CaricaGrigliaFasi(idReparto)));
            }
            catch (Exception ex)
            {
                MostraEccezione("Errore modificando una fase", ex);
            }
        }