none
Quitar en el datagridview

    Pregunta

  • Hola, tengo un datagridview en el cual necesito quitar un registros, al quitarlo el valor de una columna que es decimal se resta en un textbox.

    El problema que tengo es que hay un conflicto al restar no me realiza la operación de forma correcta.

    Este es el botón que se encarga de eso.

            Obtener una referencia a la fila actualmente seleccionada
            Dim Fila As DataGridViewRow = DataGridView2.CurrentRow
    
            If Fila IsNot Nothing Then 'Si existe una referencia válida
    
                'Obtener los valores de la fila a quitar
                Dim Producto As String = CStr(Fila.Cells("Column1").Value)
                Dim Cantidad As Int32 = CInt(Fila.Cells("Column2").Value)
    
                Label14.Text -= Convert.ToInt32(Fila.Cells("Column2").Value)
                txttotal.Text -= Convert.ToDecimal(Fila.Cells("Column3").Value)
                txtsubtotal.Text -= Convert.ToDecimal(Fila.Cells("Column3").Value)
    
                'Quitar la fila
                DataGridView2.Rows.Remove(Fila)
            End If

    Si no comprenden algo solo comenten.

    Saludos


    lunes, 2 de enero de 2017 21:28

Respuestas

  • Federico3213,

    ¿A que le llamas conflicto? ¿Obtienes algún mensaje de excepción?

    A ver, "intentas" decrementar el valor contenido en la propiedad Text del objeto 'txttotal' según el valor de la celda "Column3", la propiedad Text del objeto 'txtsubtotal' realiza la misma operación, siendo que el valor total y subtotal son distintos, ¿no deberías decrementar el valor de columnas distintas?. Por otro lado, te recomiendo escribir los identificadores con nombres que representen el contexto, como notarás el nombre Column1, ...2, ...3 no describe absolutamente nada.

    Propondré el caso con nombres de columna imaginarios que deberías ajustar según tu contexto:

    'Obtener una referencia a la fila actualmente seleccionada
    Dim Fila As DataGridViewRow = DataGridView2.CurrentRow
    
    If Fila IsNot Nothing Then 'Si existe una referencia válida
    
    	'Obtener los valores de la fila a quitar
    	Dim Producto As String = CStr(Fila.Cells("Column1").Value)
    	Dim Cantidad As Int32 = CInt(Fila.Cells("Column2").Value)
    
    	Label14.Text = (Convert.ToInt32(Label14.Text) - Cantidad).ToString()
    	txttotal.Text = (Convert.ToDecimal(txttotal.Text) -
    		Convert.ToDecimal(Fila.Cells("ColTotal").Value)).ToString()
    	txtsubtotal.Text = (Convert.ToDecimal(txtsubtotal.Text) -
    		Convert.ToDecimal(Fila.Cells("ColSubTotal").Value)).ToString()
    
    	'Quitar la fila
    	DataGridView2.Rows.Remove(Fila)
    End If



    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    lunes, 2 de enero de 2017 21:49