Visual Basic.NET - eliminar columna

 
Vista:
Imágen de perfil de melqui
Val: 643
Bronce
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

eliminar columna

Publicado por melqui (242 intervenciones) el 27/05/2021 06:47:45
hola chicos me encuentro con un problema que no estoy sabiendo resolver
esta pantalla importa los datos de una planilla de formato csv
los nombre de la columna los dibuja desde la planilla,
solo que necesito apagar algunas columnas q no son necesaria para importar, dentro del datagrid
alguien que me pueda dar una base de como apagar las columnas
solo para conocimiento, aqui solo hace la importacion, antes de ingresar en la base de datosl
intente de esta forma

1
datagriview.columns.removeAt(datagriview.columns.count-1)

solo que el me apaga de la derecha para la isquierda, en cuanto lo que necesito es por columna especifica seleciono y apago.

Screenshot_11
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Phil Rob
Val: 3.353
Oro
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

eliminar columna

Publicado por Phil Rob (1546 intervenciones) el 27/05/2021 08:38:25
Hola Melqui,

Es normal que suprime de la derecha a la isquierda por que da el indicio del ultima columna.
Prueba de dar el indicio del columna a suprimir.

La columna "Categoria" tiene el;indicio 1
1
datagriview.columns.removeAt (1)

Si es solemente para no mostrar los datos de esta columna, quizá que cambiar la tamaña de la columna est suficiente.
No he testado este codigo :
1
2
3
4
5
6
7
8
Dim TamanaActual = datagriview.columns(1).Width
' ...
' Para suprimir
datagriview.columns(1).Width = 0
' ...
' ...
' Cuando es necesario de mostrar
datagriview.columns(1).Width = TamanaActual

En otro lugar de programa, si nesecario, podemos saber si la columna es visible o no :
1
2
3
4
5
If  datagriview.columns(1).Width then
' La columna es visibleµ
Else
' ...
End If

Espero te dar buenas ideas ...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Phil Rob
Val: 3.353
Oro
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

eliminar columna

Publicado por Phil Rob (1546 intervenciones) el 27/05/2021 09:37:38
Continuacion ...

No es bien mi ejemplo con datagriview.columns(1).Width = 0. Mejor de trabajar con la propiedad Visible :

1
2
3
4
5
6
7
8
'...
        If DataGridView1.Columns(1).Visible Then
            DataGridView1.Columns(1).Visible = False
        Else
            DataGridView1.Columns(1).Visible = True
        End If
 
'...

...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de melqui
Val: 643
Bronce
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

eliminar columna

Publicado por melqui (242 intervenciones) el 27/05/2021 15:56:34
saludos phil,
mira si yo lo asigno un valor fixo para removerAt
siempre voy a excluir la columna que esta asociado a indice 1,
mas muchas vezes la planilla que recibo es dinamica, ejemplo categoria puede estar en la 4 o la 7
por eso necesito que al elimina de cuardo con la columna selecionada.

1
datagriview.columns.removeAt (1)

ya que puedo recibir la planilla csv con las columnas aleatorias.

mi idea tambien era organizar las columnas, que tambien seria una idea buena ai si me fucionaria

1
datagriview.columns.removeAt(datagriview.columns.count-1)

ya que las columnas que necesito estaria organizada, mas no estoy sabiendo hacerlo.

Screenshot_12

en la imagen este es que crea las columnas al carrgar en la grid.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Phil Rob
Val: 3.353
Oro
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

eliminar columna

Publicado por Phil Rob (1546 intervenciones) el 27/05/2021 17:05:29
Puede hacer Visible = False para solamente la columna mostrada para Click. Pero, no puede hacer Visible = True mas tarde.

1
2
3
Private Sub dgvDatos_ColumnHeaderMouseClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellMouseEventArgs) Handles dgvDatos.ColumnHeaderMouseClick
       dgvDatos.Columns(e.ColumnIndex).Visible = False
    End Sub

No es buena operación en tu codigo : dgvDatos.ColumnCount = Colunas.Count.
Para crear las columnas con Colunas, el código debe ser :
1
2
3
4
5
6
7
8
' ...
' Aquí puede ordenar la tabla Colunas si quieres
'...
dgvDatos.Columns.Clear
For C As Integer = 0 To Colunas.Count - 1
     dgvDatos.Columns.Add(Colunas(C), Colunas(C))  '  Primero parámetros es el nombre de la columna y el segundo es el texto del Header
Next C
' ...

...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de melqui
Val: 643
Bronce
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

eliminar columna

Publicado por melqui (242 intervenciones) el 27/05/2021 19:37:18
gracias phil, muy buena puntuaciion. ya la corregi. ahora
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de melqui
Val: 643
Bronce
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

eliminar columna

Publicado por melqui (242 intervenciones) el 27/05/2021 20:09:17
Phil gracias por tu tiempo,
consegui lo que estaba buscando

esta parte hace que selecione la columna especifica
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Private Sub DgvLista_ColumnHeaderMouseClick(sender As Object, e As DataGridViewCellMouseEventArgs) Handles DgvLista.ColumnHeaderMouseClick
    If DgvLista.Columns.Count = 0 Then
        Exit Sub
    Else
 
        Dim ColunaIndice As Integer = e.ColumnIndex
        DgvLista.ClearSelection()
 
        For Each dr As DataGridViewRow In Me.DgvLista.Rows
 
            dr.Cells(ColunaIndice).Selected = True
 
        Next
    End If
End Sub

y este otra parte hago que un llamado en duplo click caso desea excluir la columna
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Private Sub DgvLista_ColumnHeaderMouseDoubleClick(sender As Object, e As DataGridViewCellMouseEventArgs) Handles DgvLista.ColumnHeaderMouseDoubleClick
    If DgvLista.Columns.Count = 0 Then
        Exit Sub
    Else
        '
        Dim ColunaIndice As Integer = e.ColumnIndex
 
        Dim ColunaNome As String = DgvLista.Columns.Item(ColunaIndice).Name
        Dim StrMsgTexto As String = MsgBox("Deseja excluir a coluna [ " & ColunaNome & " ] ?", MsgBoxStyle.Question + MsgBoxStyle.YesNo, Validar.TituloJanela)
 
        If StrMsgTexto = Windows.Forms.DialogResult.No Then
            Exit Sub
        Else
            DgvLista.Columns.Remove(ColunaNome)
 
        End If
 
    End If
 
End Sub

este es mi solucion que hice.
ahora necesito crear una regla para validar los datos del datagrid con los campos de la base de datos.


Screenshot_13
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar