Hola a todos,
Llevo varios dias intentando cambiar el nombre las columnas de un DataGrid, os cuento.
En evento Load de la pagina llamo al siguiente procedimiento en el cual cargo un DataTable con la tabla en cuestión además de renombrar el nombre de las columnas para que sean mas acordes al usuario
Código:
Private Sub AbrirTabla()
TablaDatos = AccesoFB.AbrirTabla("SELECT UserName, FullName FROM Usuarios ORDER BY UserName;")
TablaDatos.Columns("UserName").Caption = "Usuario"
TablaDatos.Columns("FullName").Caption = "Nombre completo"
End Sub
Con esta tabla genero una vista con la siguiente función:
Código:
Public Function CreaVista(ByVal LosDatos As DataTable, ByVal Opciones As TFindDBOptions) As DataView
Dim dvVista As DataView
dvVista = New DataView(LosDatos)
If Not Opciones.Decreciente Then
dvVista.Sort = Opciones.Ordenar
Else
dvVista.Sort = Opciones.Ordenar + " DESC"
End If
dvVista.RowFilter = Opciones.Filtrar
dvVista.RowStateFilter = DataViewRowState.CurrentRows
Return dvVista
End Function
Donde TFindDBOptions es una estructura con la siguiente declaración:
Código:
Public Structure TFindDBOptions
Dim Ordenar As String
Dim Filtrar As String
Dim Decreciente As Boolean
Dim Pagina As Integer
End Structure
Una vez generada la vista se la asigno al DataGrid y lo enlazo:
Código:
dgDatos.DataSource = dvVista
dgDatos.DataBind()
Pero este DataGrid en las columnas (HeaderText) tiene el nombre contenido en la propiedad ColumnName del DataTable (el nombre original de las columnas) en vez del nombre contenido en la propiedad Caption (el nombre que yo quiero que aparezca).
He intentado hacerlo con el siguiente código:
Código:
Dim n As Integer
For n = 0 To _dtTable.Columns.Count - 1
dgDatos.Columns(n).HeaderText = _dtTable.Columns(n).Caption
Next
Pero este me genera un error de que la columna no es valida, tras depurar paso a paso veo que el número de columnas es siempre 0 cuando solo hay columnas que provienen de una fuente de datos vinculada mediante la propiedad DataSource del DataGrid, si se asignan columnas, por ejemplo, del tipo ButtonColumn si se refleja en la cantidad devuelta por la propiedad Count (DataGrid.Columns.Count).
¿A alguien le paso esto alguna vez?
¿Alguna solución?
Mil gracias y un saludo.
Antonio J. Évora