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:
Con esta tabla genero una vista con la siguiente función: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
Código:
Donde TFindDBOptions es una estructura con la siguiente declaración: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
Código:
Una vez generada la vista se la asigno al DataGrid y lo enlazo:Public Structure TFindDBOptions Dim Ordenar As String Dim Filtrar As String Dim Decreciente As Boolean Dim Pagina As Integer End Structure
Código:
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).dgDatos.DataSource = dvVista dgDatos.DataBind()
He intentado hacerlo con el siguiente código:
Código:
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).Dim n As Integer For n = 0 To _dtTable.Columns.Count - 1 dgDatos.Columns(n).HeaderText = _dtTable.Columns(n).Caption Next
¿A alguien le paso esto alguna vez?
¿Alguna solución?
Mil gracias y un saludo.
Antonio J. Évora