private void btnCrear_Click(object sender, EventArgs e) { if (ValidarCampos()) { List <PromocionZona> listaPromocionZona = new List <PromocionZona>(); bool isValid = true; foreach (DataGridViewRow dtr in dgvZonas.Rows) { if (Convert.ToBoolean(dtr.Cells["Sel"].Value) == true) { if (Convert.ToString(dtr.Cells["Precio"].Value).Equals(String.Empty)) { isValid = false; break; } else { PromocionZona pZona = new PromocionZona(); pZona.Zona = dtr.DataBoundItem as Zona; pZona.Precio = Convert.ToSingle(dtr.Cells["Precio"].Value); listaPromocionZona.Add(pZona); } } } if (!isValid) { MessageBox.Show("Debe ingresar el precio", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); return; } if (listaPromocionZona.Count < 1) { MessageBox.Show("Debe seleccionar al menos una zona", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); return; } List <PromocionFuncion> listaPromocionFuncion = new List <PromocionFuncion>(); foreach (DataGridViewRow dtr in dgvFunciones.Rows) { if (Convert.ToBoolean(dtr.Cells["SelF"].Value) == true) { PromocionFuncion pFuncion = new PromocionFuncion(); pFuncion.Funcion = dtr.DataBoundItem as Funcion; listaPromocionFuncion.Add(pFuncion); } } if (listaPromocionFuncion.Count < 1) { MessageBox.Show("Debe seleccionar al menos una función", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); return; } Promocion promocion = new Promocion() { Descripcion = txtDescripcion.Text.ToUpper().Trim(), FechaFin = dtpFechaFin.Value.Date, FechaInicio = dtpFechaInicio.Value.Date, TipoPromocion = cboTipoPromocion.SelectedItem as TipoPromocion, RequiereEmpresa = chkRequiereEmpresa.Checked, PromocionFunciones = listaPromocionFuncion, PromocionZonas = listaPromocionZona }; try { if (servicio.InsertPromocion(promocion)) { MessageBox.Show("Proceso realizado correctamente", "Aviso"); this.Close(); } else { MessageBox.Show("Ha ocurrido un error", "Aviso"); } } catch (Exception ex) { MessageBox.Show("Ocurrió un error: " + ex.Message, "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error); } } else { MessageBox.Show("Complete todos los campos", "Aviso"); } }