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....
try
{
conectar.Open();
string query = "SELECT * FROM detalle_inventario WHERE inventario=@inventario";
SqlCommand consulta
= new SqlCommand
(query, conectar
); consulta.Parameters.AddWithValue("@inventario", inventario);
SqlDataAdapter adaptador
= new SqlDataAdapter
(consulta
); DataTable datos
= new DataTable
(); adaptador.Fill(datos);
dgv.AutoGenerateColumns = false;
dgv.DataSource = datos;
dgv.Columns[0].DataPropertyName = "ubicacion";
dgv.Columns[1].DataPropertyName = "medicamento";
dgv.Columns[2].DataPropertyName = "lote";
dgv.Columns[3].DataPropertyName = "vto";
dgv.Columns[4].DataPropertyName = "cantidadContada";
activarControles();
}
catch (SqlException ex)
{
MessageBox.Show(ex.ToString());
}
finally
{
conectar.Close();
}
private void dgv_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
var dgv = (sender as DataGridView);
if (dgv.Columns[dgv.CurrentCell.ColumnIndex].Name == "cantidadContada")
{
TextBox cell = (TextBox)e.Control;
cell
.KeyPress -= new KeyPressEventHandler
(this.Cell_KeyPress); cell
.KeyPress += new KeyPressEventHandler
(this.Cell_KeyPress); }
}
private void Cell_KeyPress(object sender, KeyPressEventArgs e)
{
var cell = (TextBox)sender;
e.Handled = !Char.IsNumber(e.KeyChar) && e.KeyChar != Convert.ToChar(Keys.Back);
}
Hola.
El algoritmo es correcto y funciona. Probablemente el fallo lo tengas en esta instrucción:
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:
if (dgv.Columns[dgv.CurrentCell.ColumnIndex].DataPropertyName == "cantidadContada")
Saludos.