Ver Mensaje Individual
  #2 (permalink)  
Antiguo 26/09/2006, 07:49
Mitico
 
Fecha de Ingreso: marzo-2003
Mensajes: 85
Antigüedad: 21 años, 10 meses
Puntos: 1
TaM, no sé cómo será tu código exactamente pero hice la prueba según entendí que hacías y me funcionó bien. Te pongo mi código por si te sirve de ayuda para revisar el tuyo (estoy usando VS2005), no obstante si pegas todo el tuyo se le puede echar un vistazo.

En el .aspx, sólo puse el DataGrid dentro del formulario tal como lo tenías:

Código:
<asp:datagrid id="dgResultados" OnSortCommand="dgResultados_SortCommand" AllowSorting="true" runat="server"></asp:datagrid>
El Code-Behind usado:
Código:
Imports System.Data.SqlClient

Partial Class Default
    Inherits System.Web.UI.Page

    Private strTipoColumnas(3) As String
    Private strColumnasYOrden(3) As String
    Private strNombreColumnas(3) As String
    Private bVisibilidadColumnas(3) As Boolean
    Private iColumnasYOrden As Int32
    Private x As Int32
    Private sqlCon As SqlConnection
    Private sqlComando As SqlCommand

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        CargaDataGrid("iddatospersonales")
    End Sub

    Private Sub CargaDataGrid(ByVal strOrderBy As String)
        sqlCon = New SqlConnection("tu cadena de conexión")
        sqlComando = New SqlCommand()
        sqlcomando.Connection = sqlCon
        'Aquí el comando de tu consulta
        sqlcomando.CommandText = "Select idDatosPersonales, nombre, apellidos, movil from Tabla Order By " & strOrderBy
        sqlCon.Open()
        Dim ds As SqlDataReader
        ds = sqlcomando.ExecuteReader()

        dgResultados.Columns.Clear()
        Me.strTipoColumnas(0) = "BoundColumn"
        Me.strTipoColumnas(1) = "BoundColumn"
        Me.strTipoColumnas(2) = "BoundColumn"
        Me.strTipoColumnas(3) = "BoundColumn"
        Me.strColumnasYOrden(0) = "idDatosPersonales"
        Me.strColumnasYOrden(1) = "Nombre"
        Me.strColumnasYOrden(2) = "Apellidos"
        Me.strColumnasYOrden(3) = "movil"
        Me.strNombreColumnas(0) = "ID"
        Me.strNombreColumnas(1) = "nombre"
        Me.strNombreColumnas(2) = "apellidos"
        Me.strNombreColumnas(3) = "móvil"
        Me.bVisibilidadColumnas(0) = False
        Me.bVisibilidadColumnas(1) = True
        Me.bVisibilidadColumnas(2) = True
        Me.bVisibilidadColumnas(3) = True

        Me.iColumnasYOrden = Me.strColumnasYOrden.Length()
        dgResultados.AutoGenerateColumns = False
        For x = 0 To iColumnasYOrden - 1
            Select Case strTipoColumnas(x)
                Case "BoundColumn"
                    Dim bc As New BoundColumn
                    bc.DataField = strColumnasYOrden(x)
                    bc.HeaderText = strNombreColumnas(x)
                    bc.SortExpression = strColumnasYOrden(x)
                    dgResultados.Columns.Add(bc)
                    dgResultados.Columns(x).Visible = bVisibilidadColumnas(x)
            End Select
        Next
        Me.dgResultados.DataSource = ds
        Me.dgResultados.DataBind()
    End Sub

    Protected Sub dgResultados_SortCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridSortCommandEventArgs) Handles dgResultados.SortCommand
        Dim strOrderBy As String = e.SortExpression
        CargaDataGrid(strOrderBy)
    End Sub
End Class
Como ves puse datos concretos para hacer las pruebas, pero debería de funcionar igual.

Espero te sirva.

Un saludo.