Impedir datos repetidos en un DataGridView C#
Ver video youtube Ver video
En el mundo de la programación de computadoras (diseño de software),
en la que interviene un sinnúmero de situaciones que a menudo nos frustramos
con ciertos métodos que no son simples de controlar, surge la necesidad de
buscar en la internet códigos que nos ayuden o nos den una idea más clara de cómo
controlar este proceso en nuestro proyecto, esto no significa que no estemos en
la capacidad de desarrollar nuestros propios métodos sino por la necesidad de reducir
tiempo en desarrollar un programa informático.
De aquí, partiendo de esta incógnita me propuse en desarrollar
ciertos métodos que ayuden de alguna manera al desarrollo de aplicaciones informáticas
que ayudaran a los usuarios comunes simplificar de manera significativa los
procesos manuales realizados a diario.
En ocasiones nos encontramos con la necesidad de hacer
validaciones un poco complejas, como es el caso, de que, al momento de ingresar
datos a un DataGridView, no se introduzcan registros repetidos, este pequeño
ejemplo mostrara una manera de realizar esta actividad.
Por tal motivo voy a explicar cómo hacer este proceso de una
manera sencilla pero eficaz.
Para este ejemplo utilizaremos el siguiente Formulario.
*En el código fuente podrás observar los
nombres de cada control.
Por otra parte, vamos a utilizar propiedades
creadas por el usuario para ir utilizando estas técnicas en nuestros proyectos,
el uso de propiedades nos ayudan a manipular los datos ingresados en la grilla.
Clase Clientes.
public class Clientes
{
//propiedades publicas
//esta clase contendra todos los clientes agregados
public int Codigo { get; set; }
public string Apellidos { get; set; }
public string Nombres { get; set; }
}
Esta
clase contiene las propiedades que vamos a utilizar como campos para almacenar
los datos de los clientes.
Código fuente del
formulario
En primera instancia se
debe crear un objeto que permita agregar todos los clientes ingresados, para
luego ser mostrado en un DataGridView, para ello vamos a utilizar la clase
List(T) que es proporcionada por el Espacio de nombres: System.Collections.Generic
//objeto que almacenara los datos ingresados
public List<Clientes> _listaClientes = new List<Clientes>();
En
este objeto llamado _listaClientes se agregarán todos los clientes.
Vamos a utilizar también
una función la cual tendrá un valor vital en este ejemplo, por es aquí donde
configuraremos al programa para que valide si existe un cliente ya ingresado.
//función que cumple con
el objetivo de verificar si existe
//en la lista y si no lo agregar a la lista
public bool agregarCliente(Clientes cliente)
{
//comprobar si existe en la lista
//utilizando una simple consulta Linq
bool existe = _listaClientes.Any(x => x.Codigo.Equals(cliente.Codigo));
//preguntamos si existe
if (!existe )
{
//sino existe lo agregamos
_listaClientes.Add(cliente);
//limpiamos el datagrid
dataGridView1.DataSource = null;
//mostramos los datos
dataGridView1.DataSource = _listaClientes;
//enviamos que se agrego
return true;
}
//caso contrario enviamos que no se agrego
return false;
}
Como podrán observar aquí se utiliza una consulta Linq(Language
Integrated Query) para comparar
datos: _listaClientes.Any(x =>
x.Codigo.Equals(cliente.Codigo));, y luego solo se procede a validar
resultado que es de tipo bool.
Otra
cosa que se debe destacar, es la forma de cómo se agregar una cliente a la
lista:
_listaClientes.Add(cliente);
También
se ha creado una pequeña función de limpiar los cuadros de textos.
void limpiarTXT()
{
txtCodigo.Text = "";
txtApellidos.Text = "";
txtNombres.Text = "";
}
Por último, la
codificación del botón Agregar. En él está el comando de controlar que
se valide cuando el usuario empiece a ingresar los datos al control Grid.
private void btnAgregar_Click(object sender, EventArgs e)
{
//creamos un objeto para validar datos de ingreso
Clientes lineanueva = new Clientes()
{
Codigo = Int32.Parse(txtCodigo.Text),
Apellidos = txtApellidos.Text,
Nombres = txtNombres.Text
};
//invocamos a la funcion agregar clientes
if (!agregarCliente(lineanueva))
{
MessageBox.Show("Este código ya esta ingresado", "Revise");
}
limpiarTXT();
}
CONCLUSION
Este simple proceso
podemos controlar que no se repitan datos en un DataGridView. Este
simple código ustedes le pueden dar el uso que deseen, mejorarlo para que sea más
eficiente y eficaz y que compartan los cambios realizados en él.
Esta lógica utilizada en
este pequeño ejemplo, puede ser implementada en cualquier método en el que se
utilice LISTAS GENÉRICAS.
Ver vídeo youtube Ver vídeo
Nota: Si necesitan la ayuda
para resolver algún tema en particular, no duden en solicitarlo más abajo.