Ver Mensaje Individual
  #1 (permalink)  
Antiguo 21/05/2010, 12:17
patitox04
 
Fecha de Ingreso: octubre-2008
Mensajes: 22
Antigüedad: 15 años, 6 meses
Puntos: 0
Exclamación Eliminar un Row en un DataGrid Windows Form

Hola compañeros!!!!

Introducción

Estoy desarrollando en VB .NET 2005 una aplicación para una PDA que se comunica a un archivo X.sdf (que es como una BD movil), esta aplicacion es para toma de inventarios.

Problema

Estoy realizando una pantalla para eliminar registros del archivo X.sdf, en la tabla me lista los artículos registrados, y SI me elimina (del archivo) un articulo seleccionado de la tabla. El problema es al querer "Refrescar" la tabla y que ya no me muestre el registro que se eliminó.

Mi codigo que manda llamar el carga datos:
Código:
' En el metodo Load
     Private Sub frmEliminar_Load(ByVal sender As System.Object, ByVal e As             System.EventArgs) Handles MyBase.Load
        carga_Datos()
    End Sub
Mi codigo del carga_Datos():
Código:
    Private Sub carga_Datos()
        Dim dsTemporal As DataSet
        Me.Activate()
        Me.Enabled = False
        If Not Me.grdArticulos.DataSource Is Nothing Then
            MessageBox.Show("No esta vacio")
            dsTemporal = New DataSet
            Me.grdArticulos.DataSource = dsTemporal
        Else
            MessageBox.Show("Esta vacio")
        End If
        Try
            Dim espere As New frmEspere()
            Me.Enabled = False
            espere.Show()
            espere.Cambia_Mouse(True)
            espere.Activate()
            ConexionesDatos.listar_Articulos(Me.grdArticulos)
            espere.Cambia_Mouse(False)
            espere.Close()
            ManejoSonidos.PlaySoundFile("\My documents\encontrado.wav")
            Me.Enabled = True
            pintaTabla()
        Catch ex As Exception
            MessageBox.Show("No se pudo listar los Articulos. Datos del error: " + ex.Message + " " + ex.StackTrace)
            frmEspere.Cambia_Mouse(False)
            ManejoSonidos.PlaySoundFile("\My documents\no_encontrado.wav")
            Me.Enabled = True
        End Try
    End Sub

Mi código que lista los articulos es:
Código:
'lista todos los articulos capturados en toma de inventarios
    Public Sub listar_Articulos(ByVal tabla As System.Windows.Forms.DataGrid)

        Dim conexionRealizada As Boolean
        Dim loConexion As New SqlCeConnection
        Dim loDataSet As New DataSet
        Dim loDataAdapter As New SqlCeDataAdapter

        Configura_Conexion()

        Try
            loConexion = New SqlCeConnection(ConexionesDatos.regresaConexion())
            loDataAdapter = New SqlCeDataAdapter( _
                    "SELECT DISTINCT t.toma, " + _
                            "t.articulo, " + _
                            "t.cantidad, " + _
                            "a.descripcion " + _
                     "FROM Tomas_Inventarios t, Articulos a " + _
                     "WHERE t.articulo = a.articulo " + _
                     "ORDER BY t.cantidad ASC", _
                     loConexion)

            loDataSet.Reset()
            loDataAdapter.Fill(loDataSet, "Tomas_Inventarios")
            tabla.DataSource = loDataSet.Tables("Tomas_Inventarios")
            conexionRealizada = True
        Catch ex As Exception
            MessageBox.Show("No hay artículos...")
            ManejoSonidos.PlaySoundFile("\My documents\no_encontrado.wav")
        End Try
    End Sub
Mi codigo que elimina:
Código:
Private Sub btnEliminar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnEliminar.Click
        elimina_Renglon()
    End Sub

    Private Sub elimina_Renglon()
        Dim datos As New DataSet
        Dim lcToma, _
            lcArticulo, _
            lcCantidad As String
        Dim opcion As Integer

        lcToma = grdArticulos.Item(grdArticulos.CurrentCell.RowNumber, 0).ToString()
        lcArticulo = grdArticulos.Item(grdArticulos.CurrentCell.RowNumber, 1)
        lcCantidad = grdArticulos.Item(grdArticulos.CurrentCell.RowNumber, 2)
        opcion = MsgBox("¿Está seguro que desea borrar el registro?" + _
                        vbCrLf + vbCrLf + _
                        "Artículo " + lcArticulo + vbCrLf + _
                        "Cantidad " + lcCantidad + vbCrLf + _
                        "Toma " + lcToma, _
                        4 + 32 + 256)

        If opcion = vbYes Then 'Si es el botón Si
            elimina_Articulo(lcToma)
            carga_Datos()
        End If
    End Sub
Codigo donde me marca error:
Código:
    Private Sub pintaTabla()
        Dim grdTEstilo As New DataGridTableStyle
        grdTEstilo.MappingName = "Tomas_Inventarios" ' <---- SEGUN LA EXCEPCION AQUI ESTA EL ERROR
        Me.grdArticulos.TableStyles.Add(grdTEstilo)
        grdTEstilo.GridColumnStyles(0).Width = 0
        grdTEstilo.GridColumnStyles(1).Width = 60
        grdTEstilo.GridColumnStyles(2).Width = 40
        grdTEstilo.GridColumnStyles(3).Width = 190
    End Sub

Lo único que quiero es después de eliminar, me quite el articulo del DataGrid, no importa que sea fea la solución, (intente ponerle Visible = false pero no encontré la propiedad). Ya que si elimina del archivo, y si se actualiza en la BD del Servidor.

Por favor me urge T______________________T

NOTA: Busque en todo el foro y nada de lo que encontré me sirvió, por eso me atreví a hacer un tema.

Saludos!