Ver Mensaje Individual
  #1 (permalink)  
Antiguo 31/01/2006, 02:02
aevora
 
Fecha de Ingreso: febrero-2005
Mensajes: 18
Antigüedad: 19 años, 10 meses
Puntos: 0
Columnas DataGrid

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