elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.


 


Tema destacado: 4n4lDetector v1.3: herramienta de análisis estático de malware


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (Moderadores: Novlucker, seba123neo, kub0x, Eleкtro)
| | | |-+  activar columna de datagrid y que acepte solo datos numericos
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: activar columna de datagrid y que acepte solo datos numericos  (Leído 363 veces)
SAGA-gl

Desconectado Desconectado

Mensajes: 45


Ver Perfil
activar columna de datagrid y que acepte solo datos numericos
« en: 15 Agosto 2017, 01:41 »

buenas noches gente del foro tanto tiempo sin pasarme por aca....verán tengo un datagrid en el cual hago una consulta y la muestro en el mismo....pero deseo activar una columna (cantidadContada) solamente para que se puedan ingresar datos de tipo numérico....como puedo lograrlo? escribi este código pero no lo logro muchas grax d antemano....
Código
  1. try
  2.                        {
  3.                            conectar.Open();
  4.                            string query = "SELECT * FROM detalle_inventario WHERE inventario=@inventario";
  5.                            SqlCommand consulta = new SqlCommand(query, conectar);
  6.                            consulta.Parameters.AddWithValue("@inventario", inventario);
  7.                            SqlDataAdapter adaptador = new SqlDataAdapter(consulta);
  8.                            DataTable datos = new DataTable();
  9.                            adaptador.Fill(datos);
  10.                            dgv.AutoGenerateColumns = false;
  11.                            dgv.DataSource = datos;
  12.                            dgv.Columns[0].DataPropertyName = "ubicacion";
  13.                            dgv.Columns[1].DataPropertyName = "medicamento";
  14.                            dgv.Columns[2].DataPropertyName = "lote";
  15.                            dgv.Columns[3].DataPropertyName = "vto";
  16.                            dgv.Columns[4].DataPropertyName = "cantidadContada";
  17.  
  18.                            activarControles();
  19.                        }
  20.                        catch (SqlException ex)
  21.                        {
  22.                            MessageBox.Show(ex.ToString());
  23.                        }
  24.                        finally
  25.                        {
  26.                            conectar.Close();
  27.  
  28.                        }
  29. private void dgv_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
  30.        {
  31.            var dgv = (sender as DataGridView);
  32.            if (dgv.Columns[dgv.CurrentCell.ColumnIndex].Name == "cantidadContada")
  33.            {
  34.                TextBox cell = (TextBox)e.Control;
  35.  
  36.                cell.KeyPress -= new KeyPressEventHandler(this.Cell_KeyPress);
  37.                cell.KeyPress += new KeyPressEventHandler(this.Cell_KeyPress);
  38.            }
  39.  
  40.        }
  41.        private void Cell_KeyPress(object sender, KeyPressEventArgs e)
  42.        {
  43.            var cell = (TextBox)sender;
  44.  
  45.            e.Handled = !Char.IsNumber(e.KeyChar) && e.KeyChar != Convert.ToChar(Keys.Back);
  46.        }
  47.  


En línea

Eleкtro
🌍 🕉️ 🛏️ Novato Astral 🛏️ 🕉️ 🌍 y...
Moderador Global
***
Desconectado Desconectado

Mensajes: 9.298


El sentido común es el menos común de los sentidos


Ver Perfil
Re: activar columna de datagrid y que acepte solo datos numericos
« Respuesta #1 en: 5 Septiembre 2017, 04:02 »

Hola.

El algoritmo es correcto y funciona. Probablemente el fallo lo tengas en esta instrucción:
Citar
Código
  1. if (dgv.Columns[dgv.CurrentCell.ColumnIndex].Name == "cantidadContada")

...Fíjate bien en que ahí estás evaluando la propiedad Name de la columna (por defecto: 'Column1', 'Column2', etc), no la propiedad DataPropertyName.

Un modo rápido de resolverlo:
Código
  1. if (dgv.Columns[dgv.CurrentCell.ColumnIndex].DataPropertyName == "cantidadContada")

Saludos.



En línea


[/cent
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines