void DgvPlus_CellValidating(object sender, DataGridViewCellValidatingEventArgs e) { if (PermitirEventosInternos) { try { if (this.CurrentRow.Cells[e.ColumnIndex].IsInEditMode) { AntesBuscarCellEventArgs argumentos = new AntesBuscarCellEventArgs(e.ColumnIndex, e.RowIndex); OnAntesBuscarCell(argumentos); if (argumentos.TipoConsulta == TipoConsulta._NoSet) { columnasgrid registro = this.ColumnasGrid.Find(x => x.nombre.ToUpper() == this.Columns[e.ColumnIndex].Name.Substring(3) && !string.IsNullOrEmpty(x.busqueda)); if (registro != null) { TipoConsulta tipo; Enum.TryParse(registro.busqueda, out tipo); argumentos.TipoConsulta = tipo; } else { return; } } if (argumentos.TipoConsulta != TipoConsulta._NoSet) { if (!argumentos.Cancel) { object nombreColumna = this.Columns[e.ColumnIndex].Tag; ValidacionGridEventArgs argumento = new ValidacionGridEventArgs(e.ColumnIndex, e.RowIndex) { Cancel = e.Cancel, EsBoton = false }; OnValidarGrid(argumento); e.Cancel = argumento.Cancel; if (!e.Cancel) { object objeto = null; if (argumentos.ColumnaObjeto != null) { nombreColumna = argumentos.ColumnaObjeto; } if (!this.Columns.Contains((nombreColumna ?? "").ToString())) { e.Cancel = true; //this.CancelEdit(); ModeloDB.General.Mensaje("Columna destino de objeto encontrado no definida"); } else { objeto = BuscarListaPr.BuscarRegistro(argumentos.TipoConsulta, this.EditingControl.Text); if (objeto != null) { this.CurrentRow.Cells[nombreColumna.ToString()].Value = objeto; ((Instrumental1)this.CurrentRow.DataBoundItem).IntegrarAsociados(); } else { e.Cancel = true; //this.CancelEdit(); ModeloDB.General.Mensaje("Objeto no encontrado."); } } } } } else { e.Cancel = true; //this.CancelEdit(); ModeloDB.General.Mensaje("Tipo de consulta no definida"); } } } catch (Exception ex) { e.Cancel = true; //this.CancelEdit(); ModeloDB.General.Mensaje(ex.Message); } } }
void DgvPlus_CellClick(object sender, DataGridViewCellEventArgs e) { if (PermitirEventosInternos && e.ColumnIndex > -1 && e.RowIndex > -1) { DataGridViewColumn campo = this.Columns[e.ColumnIndex]; try { object objeto = null; DataGridViewColumn columna = this.Columns[e.ColumnIndex]; if (this.Columns[e.ColumnIndex].GetType().Name == "DataGridViewButtonXColumn") { if (columna.Name.Contains("BEliminar")) { this.Rows.RemoveAt(e.RowIndex); } else { object nombreColumna = campo.Tag; AntesBuscarCellEventArgs argumentos = new AntesBuscarCellEventArgs(e.ColumnIndex, e.RowIndex); OnAntesBuscarCell(argumentos); if (argumentos.TipoConsulta == TipoConsulta._NoSet) { columnasgrid registro = this.ColumnasGrid.Find(x => x.nombre.ToUpper() == columna.Name.Substring(3)); if (registro != null) { TipoConsulta tipo; Enum.TryParse(registro.busqueda, out tipo); argumentos.TipoConsulta = tipo; } } if (argumentos.TipoConsulta != TipoConsulta._NoSet) { if (!argumentos.Cancel) { if (campo.DataGridView.CurrentRow.Index == campo.DataGridView.NewRowIndex) { campo.DataGridView.EndEdit(); } if (!campo.DataGridView.IsCurrentCellDirty) { campo.DataGridView.NotifyCurrentCellDirty(true); } else { campo.DataGridView.NotifyCurrentCellDirty(false); } if (e.RowIndex > -1) { if (columna.Name.Contains("BCliente")) { if (campo.Tag == null) { nombreColumna = "colCliente"; } objeto = BuscarListaPr.BuscarObjeto(TipoConsulta.Clientes); } else { objeto = BuscarListaPr.BuscarObjeto(argumentos.TipoConsulta, false, true, argumentos.GetValoresAdicionales()); if (argumentos.ColumnaObjeto != null) { nombreColumna = argumentos.ColumnaObjeto; } } } if (objeto != null) { OnValidarGrid(new ValidacionGridEventArgs(e.ColumnIndex, e.RowIndex) { EsBoton = true, Objeto = objeto }); campo.DataGridView.NotifyCurrentCellDirty(false); campo.DataGridView.BeginEdit(false); campo.DataGridView.CurrentRow.Cells[nombreColumna.ToString()].Value = objeto; campo.DataGridView.InvalidateRow(e.RowIndex); } } campo.DataGridView.EndEdit(); } else { ModeloDB.General.Mensaje("Tipo de consulta no definida"); } } } } catch (Exception ex) { ModeloDB.General.Mensaje(ex.Message.ToString()); } } }