Ejemplo n.º 1
0
 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);
         }
     }
 }
Ejemplo n.º 2
0
        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());
                }
            }
        }