• Lunes 18 de Noviembre de 2024, 03:34

Autor Tema:  Validar campos Nulos en un DataGridView  (Leído 15805 veces)

lugarda

  • Miembro activo
  • **
  • Mensajes: 52
  • Nacionalidad: co
    • Ver Perfil
Validar campos Nulos en un DataGridView
« en: Miércoles 4 de Agosto de 2010, 21:07 »
0
hola a todos, les cuento que sigo con el tema de los DataGridView. Ya he podido superar varios inconvenientes que se me han presentado en mi programa , gracias a la ayuda del Foro y otras cosas que he encontrado en la documentación. Ahora estoy construyendo la acción que necesito para el evento Click del Boton Salvar. Pense que ya lo tenia listo, pero se me olvidó un pequeño detalle y es que no se como verificar que todas las filas tengan los campos llenos, antes que se ejecute lo que tengo en el evento click.
Gracias de antemano si alguien me da alguna idea.

El código que habia hecho en el evento click es el siguiente.
Código: C#
  1.  
  2. private void bSalvar1_Click_1(object sender, EventArgs e)
  3.         {
  4.                 //en el textbox se obtiene el consecutivo que se la va asignar al documento
  5.                 tbConsecutivo.Text = new VisualMaestrosNG(conexionOracle).obtenerConsecutivo("AD");
  6.                // aqui se recorre el DataGridView para llenar la lista de campos que van al insert sobre la base de datos
  7.                foreach (DataGridViewRow row in dataGridView2.Rows)
  8.                 {
  9.                     ltAdminSaldo = new List<AdminSaldoTR>();
  10.                     adminSaldo = new AdminSaldoTR();
  11.                     if (!string.IsNullOrEmpty(row.Cells["colFacturaS"].FormattedValue.ToString()) )
  12.                     {
  13.                         adminSaldo.Codigo = tbConsecutivo.Text;
  14.                         adminSaldo.Nolinea = Convert.ToInt32(row.Cells["colLineaNo"].Value.ToString());
  15.                         adminSaldo.CodRecibo = tbRecibo.Text;  
  16.                         adminSaldo.Factura=row.Cells["colFacturaS"].Value.ToString();
  17.                         adminSaldo.SaldoFactura = saldofactura;
  18.                         adminSaldo.ValorAsignado = Convert.ToDecimal(row.Cells["colVlorAsignaS"].Value.ToString());
  19.                         adminSaldo.SubConcepto =Convert.ToInt32(row.Cells[4].Value.ToString());                        
  20.                         adminSaldo.CodigoDivision = Convert.ToInt32(row.Cells[3].Value.ToString());
  21.                         adminSaldo.DocumentoReferencia = row.Cells["colDocReferencia"].Value.ToString();
  22.                         adminSaldo.FechaCreacion = Convert.ToDateTime(tbFechaCrea.Text);
  23.                         adminSaldo.UsuarioCreacion = tbUsuCrea.Text;
  24.                         ltAdminSaldo.Add(adminSaldo);
  25.                   // el método hace la insercion de los datos por cada fila.
  26.                         new CarteraNG().insertaAdminSaldo(conexionOracle, ltAdminSaldo);
  27.                     }
  28.                 }
  29.             }
  30.             else
  31.             {
  32.                 MessageBox.Show(Generales.mensajeError(4), "Mensaje", MessageBoxButtons.OK, MessageBoxIcon.Error);
  33.             }
  34.  
  35.         }
  36.  
  37.  

morringos

  • Miembro activo
  • **
  • Mensajes: 65
  • Nacionalidad: 00
    • Ver Perfil
Re: Validar campos Nulos en un DataGridView
« Respuesta #1 en: Domingo 8 de Agosto de 2010, 17:20 »
0
Bueno, por lo que veo estás mas avanzada que yo, pero hice eso de poder saber si se encuentran o no vacíos algunos campos del dataGridView utilizando dos ciclos for, bueno, te dejo el código que hice para ver si te sirve de algo.

Primero, la filas y eso, las crea el evento Load del form, creando una tablita de 10x10, con el siguiente código:

Código: C#
  1.  
  2. dataGridView1.ColumnCount = 10;
  3. dataGridView1.RowCount = 10;
  4. //Con éste otro, se llenan todos los campos con valores de 1
  5.  
  6. for (int i = 0; i < dataGridView1.RowCount; i++)
  7.             {
  8.                 for (int j = 0; j < dataGridView1.ColumnCount; j++)
  9.                 {
  10.                     dataGridView1[i, j].Value = 1;
  11.                 }
  12.             }
  13. //Para poner un campo vacío, utilicé la siguiente sentencia
  14. dataGridView1[4, 4].Value = "";
  15.  
  16.  

Ahora, comentando la última línea, se puede jugar en que si quieres que te salga el mensajito de que hay campos vacíos o no, si la comentas, te saldrá que ningún campo, si la descomentas, te saldrá que hay campos vacíos, con el siguiente código:

Código: C#
  1.  
  2. bool bandera = false;
  3.  
  4.             for (int i = 0; i < dataGridView1.RowCount; i++)
  5.             {
  6.                 for (int j = 0; j < dataGridView1.ColumnCount; j++)
  7.                 {
  8.                     if (Convert.ToString(dataGridView1[i, j].Value) == "")
  9.                         bandera = true;
  10.                 }
  11.             }
  12.  
  13.             if (bandera == true)
  14.                 MessageBox.Show("Hay campos que se encuentran vacíos");
  15.             else
  16.                 MessageBox.Show("No se encontraron campos vacíos");
  17.  
  18.  


Bueno, lo que hace el código es recorrer cada celda del dataGridView utilizando dos ciclos for, pero en este caso, lo convierto a string el valor ya que devuelve tipo objeto y así no lo puedo comprar con "" que sería string, espero y te sea de ayuda el ejemplo que hice, porque a como dije, veo que ya utilizas cosas más avanzadas que por ahorita todavía no las manejo bien todas.

Saludos!;
Morringos Phyps!; ;)


lugarda

  • Miembro activo
  • **
  • Mensajes: 52
  • Nacionalidad: co
    • Ver Perfil
Re: Validar campos Nulos en un DataGridView
« Respuesta #2 en: Lunes 9 de Agosto de 2010, 14:54 »
0
hola, gracias por tu respuesta. Jajaja me hiciste reir con eso que estoy mas avanzada ... si supieras los dolores de cabeza que he tenido aprendiendo c#. Te cuento que revise tu respuesta y pensando un poco , no es necesario recorrer filas y despues columnas ya que con el foreach sobre filas puedo recorrer cada fila y sobre cada fila validar las columnas que quiero verificar que no sean nulas. Estuve tambien preguntandole a un amigo y al parecer la la unica forma que hay es hacer el ciclo de verificacion. Finalmente hice un método que devuelve un bool y me recorre el DataGridView para verificar las celdas que necesito. Te copio el código que hice.
Oye en serio gracias por contestar, pues son pocos los casos que he puesto y alguien me ha respondido. Es muy chevere cuando recibir respuestas del foro.
Gracias.

Código: C#
  1.  
  2.  private bool celdasNullEnDataGridView2()
  3.         {
  4.             bool bVacia=false;
  5.             foreach (DataGridViewRow row in dataGridView2.Rows)
  6.             {
  7.                 if  (!row.IsNewRow &&  
  8.                     (string.IsNullOrEmpty(row.Cells["colFacturaS"].FormattedValue.ToString()) ||
  9.                      string.IsNullOrEmpty(row.Cells["colDivision"].FormattedValue.ToString()) ||
  10.                      string.IsNullOrEmpty(row.Cells["colSubConcepto"].FormattedValue.ToString()) ||
  11.                      string.IsNullOrEmpty(row.Cells["colDocReferencia"].FormattedValue.ToString()) ||
  12.                      string.IsNullOrEmpty(row.Cells["colVlorAsignaS"].FormattedValue.ToString())))
  13.                 { bVacia = true;}
  14.             }
  15.             return bVacia;
  16.         }
  17.  
  18.