martes, 12 de marzo de 2013

Eliminar registros de una lista genérica

A continuacion utilizaremos.

RemoveList : Elimina un objeto de la List(Of T). 

En nuestro caso eliminaremos registros basándose en la columna código siempre y cuando cumpla la condición.


Código fuente


Paso 1: Creamos una clase llamada oProducto

Public Class oProducto

    Public Property Codigo As Integer
    Public Property producto As String
    Public Property precio As Double
    Public Property cantidad As Integer
    Public Property estado As String
End Class

Paso 2: Declaramos una variable tipo Lista

Dim loProducto As New List(Of oProducto)

Paso 3: Declaramos una variable, Asiendo referencia a la clase oProducto

Private Sub btnAgregar_Click(ByVal sender As System.ObjectByVal e As System.EventArgsHandles btnAgregar.Click
Try
   'Declaramos una variable, Asiendo referencia a la clase oProducto
   Dim oProducto As New oProducto
   With oProducto
       .Codigo = txtCodigo.Text
       .producto = txtProducto.Text
       .cantidad = CInt(txtCantidad.Text)
       .precio = CDbl(txtPrecio.Text)
    'Verificamos  si esta seleccionado sera Activo de lo contrario Inactivo
        .estado = If(chkEstado.Checked = True"Activo""Inactivo")
   End With
    'Agregamos los elementos 
   loProducto.Add(oProducto)

   'llamamos al procediento
   Listar_productos()

    'invocamos al evento Click del boton Nuevo
    btnNuevo_Click(sender, e)
           
Catch ex As Exception
     MessageBox.Show("Error al registrar producto.""vb.net"MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
End Sub

Paso 4: Capturamos el código del producto a eliminar

Private Sub btnEliminar_Click(ByVal sender As System.ObjectByVal e As System.EventArgsHandles btnEliminar.Click
Try
   Dim resultado As DialogResult = MessageBox.Show("Desea eliminar producto", _
                                                    "vb.net", _
                                                    MessageBoxButtons.YesNo, _
                                                    MessageBoxIcon.Question)
   If (resultado = MsgBoxResult.Yes) Then

  'Capturamos el código del producto a eliminar
    Dim _Codigo As Integer = CInt(txtCodigo.Text)
  Dim removeList As List(Of oProducto) = loProducto
    removeList.RemoveAll(Function(p As oProducto) p.Codigo = _Codigo)

 btnNuevo_Click(sender, e)

  'Listamos los producto
   Listar_productos()

    MessageBox.Show("Registro eliminado""vb.net", _
                                            MessageBoxButtons.OK, MessageBoxIcon.Information)
End If
Catch ex As Exception
            MessageBox.Show(ex.Message, "vb.net", _
              MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
End Sub

Paso 5: Función Listar_productos

Sub Listar_productos()
Try
  If (loProducto IsNot NothingThen
   dtgProductos.Rows.Clear()
   For rows As Integer = 0 To loProducto.Count - 1
   dtgProductos.Rows.Add()
   'asignamos los valores
   dtgProductos("txt_dtgCodigo", rows).Value = loProducto(rows).Codigo
   dtgProductos("txt_dtgProducto", rows).Value = loProducto(rows).producto
   dtgProductos("txt_dtgCantidad", rows).Value = loProducto(rows).cantidad
   dtgProductos("txt_dtgPrecio", rows).Value = loProducto(rows).precio
   dtgProductos("txt_dtgEstado", rows).Value = loProducto(rows).estado
    Next
End If
Catch ex As Exception
            MessageBox.Show("Error mientras se listaba los productos...""vb.net"MessageBoxButtons.OK, MessageBoxIcon.Error)
 End Try
End Sub

Paso 6: Programar botón btnNuevo

Private Sub btnNuevo_Click(ByVal sender As System.ObjectByVal e As System.EventArgsHandles btnNuevo.Click
        txtCodigo.Clear()
        txtProducto.Clear()
        txtCantidad.Clear()
        txtPrecio.Clear()
        chkEstado.Checked = True
        txtCodigo.Focus()
End Sub

Paso 7: Programar Datagridview

Private Sub dtgProductos_CellClick(ByVal sender As System.ObjectByVal e As System.Windows.Forms.DataGridViewCellEventArgsHandles dtgProductos.CellClick
Try
   If (e.RowIndex > -1) Then
     txtCodigo.Text = CInt(dtgProductos("txt_dtgCodigo", e.RowIndex).Value)
     txtProducto.Text = dtgProductos("txt_dtgProducto", e.RowIndex).Value
     txtCantidad.Text = dtgProductos("txt_dtgCantidad", e.RowIndex).Value
     txtPrecio.Text = dtgProductos("txt_dtgPrecio", e.RowIndex).Value
     chkEstado.Checked = If(dtgProductos("txt_dtgEstado", e.RowIndex).Value = "Activo"TrueFalse)
    End If
Catch ex As Exception
MessageBox.Show("Error""vb.net"MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
End Sub

Resultado

Mostramos el reporte luego de haber eliminado el registro de la lista genérica.


No hay comentarios:

Publicar un comentario