none
Formato link para columna de DGV creada en tiempo de ejecución

    Pregunta

  • Buenas a todos, estoy trabajando con SQL y VB.NET, y necesito saber como lograr que una columna de mi DGV que he llenado con SQL sea de tipo link; me han dicho que añadiendo una columna de tipo link, pero en mi caso, las columnas se añaden hasta pulsar un botón. Lo que tengo en esa columna son rutas ej:"C:\Users\ADMIN\Downloads" me gustaria que al dar clic en ese campo, se abriera la carpeta o archivo.
    Espero puedan ayudarme. 
    Saludos!

    No tengo firma...

    miércoles, 23 de noviembre de 2016 17:49

Respuestas

  • Hola Ziany,

    Lo que puedes hacer es crear tus columnas en tiempo de diseño, ahí crearías tu DataGridViewLinkColumn. Y a la hora de asignar el DataTable al DataSource del DataGridView deshabilitas la propiedad AutoGenerateColumns a False, para que no te genere las columnas, y por medio de la propiedad DataPropertyName asignas que campo corresponde a cada columna.

    Algo como :

    DataGridView1.DataSource = dt  'Algún DataTable
    
    DataGridView1.AutoGenerateColumns = False
    
    DataGridView1.Columns(0).DataPropertyName = "Campo1"
    DataGridView1.Columns(1).DataPropertyName = "Campo2

    Y te cargaría las rutas en la columna de tipo Link. Y para poder abrir las rutas tendrías que iniciar un proceso :

    - Asumo que todos los path corresponden a carpetas, por eso uso Directory.

    Private Sub DataGridView1_CellContentClick(sender As Object, e As ............
    
        If e.ColumnIndex = 1 Then 'Indice de la columna que tiene el Link (Columna 2, posición 1)
            Dim path = DataGridView1(e.ColumnIndex, e.RowIndex).Value.ToString  'Obtiene la url
    
            If Directory.Exists(path) Then
                Process.Start(path)  'Si existe lo abre...
            Else
                MessageBox.Show("La ruta no existe!") 'No existe
            End If
    
        End If
    End Sub

    Ojo *** Tienes que validar la existencia del Archivo usando File.Exists o Directory.Exists si es una carpeta antes de iniciar el proceso, para no tener problemas.

    Saludos.


    JC NaupaCrispín
    Lima - Perú

    La magia no existe, la programación SI

    • Propuesto como respuesta Laura CeglzModerator viernes, 25 de noviembre de 2016 19:01
    • Marcado como respuesta Ziany lunes, 28 de noviembre de 2016 15:35
    miércoles, 23 de noviembre de 2016 22:02

Todas las respuestas

  • Hola Ziany,

    Lo que puedes hacer es crear tus columnas en tiempo de diseño, ahí crearías tu DataGridViewLinkColumn. Y a la hora de asignar el DataTable al DataSource del DataGridView deshabilitas la propiedad AutoGenerateColumns a False, para que no te genere las columnas, y por medio de la propiedad DataPropertyName asignas que campo corresponde a cada columna.

    Algo como :

    DataGridView1.DataSource = dt  'Algún DataTable
    
    DataGridView1.AutoGenerateColumns = False
    
    DataGridView1.Columns(0).DataPropertyName = "Campo1"
    DataGridView1.Columns(1).DataPropertyName = "Campo2

    Y te cargaría las rutas en la columna de tipo Link. Y para poder abrir las rutas tendrías que iniciar un proceso :

    - Asumo que todos los path corresponden a carpetas, por eso uso Directory.

    Private Sub DataGridView1_CellContentClick(sender As Object, e As ............
    
        If e.ColumnIndex = 1 Then 'Indice de la columna que tiene el Link (Columna 2, posición 1)
            Dim path = DataGridView1(e.ColumnIndex, e.RowIndex).Value.ToString  'Obtiene la url
    
            If Directory.Exists(path) Then
                Process.Start(path)  'Si existe lo abre...
            Else
                MessageBox.Show("La ruta no existe!") 'No existe
            End If
    
        End If
    End Sub

    Ojo *** Tienes que validar la existencia del Archivo usando File.Exists o Directory.Exists si es una carpeta antes de iniciar el proceso, para no tener problemas.

    Saludos.


    JC NaupaCrispín
    Lima - Perú

    La magia no existe, la programación SI

    • Propuesto como respuesta Laura CeglzModerator viernes, 25 de noviembre de 2016 19:01
    • Marcado como respuesta Ziany lunes, 28 de noviembre de 2016 15:35
    miércoles, 23 de noviembre de 2016 22:02
  • Hola Joel, te agradezco mucho tu ayuda, probare el código que me has dado y te haré saber los resultados.

    Saludos!


    No tengo firma...

    jueves, 24 de noviembre de 2016 13:25