domingo, 17 de agosto de 2008

Validar entradas en un GRIDVIEW

Bien, despues de buscar por un millon de foros, buscando la forma de que mi GridView en algunas columnas aceptara solo numeros y en otra convirtiera en mayusculas los datos, (teniendo en cuenta que "Gridview" no cuenta con una propiedad como charactercasing que tiene textbox), aqui va la solucion, que mejor que con un ejemplo.




Lo primero agregar el evento "EditingControlShowing" del GridView






Luego agregar los siguientes procedimientos

void AlfaNumericos(object sender, System.EventArgs e)
  {  
  ((System.Windows.Forms.KeyPressEventArgs)(e)).KeyChar = Convert.ToChar(Convert.ToString(((System.Windows.Forms.KeyPressEventArgs)(e)).KeyChar).ToUpper()[0]); //Transformo a mayuscula las entradas de la columna 1
  ((System.Windows.Forms.KeyPressEventArgs)(e)).Handled = false;  
  }

  void SoloNumero(object sender, System.EventArgs e)
  {
  char Valor;
  Valor = ((System.Windows.Forms.KeyPressEventArgs)(e)).KeyChar;  
  if (char.IsDigit(Valor) == true)
  {
  ((System.Windows.Forms.KeyPressEventArgs)(e)).Handled = false;
  }
  else
  {  
  ((System.Windows.Forms.KeyPressEventArgs)(e)).Handled = true;  
  }
  }

  private void productosDataGridView_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
  {
  if (this.productosDataGridView.CurrentCell.ColumnIndex == 2 | this.productosDataGridView.CurrentCell.ColumnIndex == 0)   //Columna 0
  {
  e.Control.KeyPress += new KeyPressEventHandler(SoloNumero);
  }
  else
  {
  e.Control.KeyPress += new KeyPressEventHandler(AlfaNumericos);
  }
  }