Ver Mensaje Individual
  #3 (permalink)  
Antiguo 26/09/2006, 08:03
TaM
 
Fecha de Ingreso: noviembre-2005
Mensajes: 58
Antigüedad: 19 años, 1 mes
Puntos: 0
Muchas gracias por probarlo!

He seguido haciendo pruebas y he visto que si creo las columnas en el html sí que me entra en el evento. No lo entiendo...Yo utilizo la versión 2003, pero sería raro que dependiera de eso...

Mi código es enorme...lo que controla el Datagrid basicamente es lo que pegué.

en el html:

<asp:datagrid id="dgResultados" AllowSorting="True" AutoGenerateColumns="False" OnSortCommand="dgResultados_SortCommand" />

y luego en el código, entre otras cosas, hago esto:

Protected Sub CargaDataGrid(ByVal strOrderBy As String)
Dim oDataSet As DataSet
Dim strCursor As String

RecogerDatos()

strCursor = "HD_T_PERIFERICOS"
oDataSet = oPerifericos.BuscarPeriferico(strNserie, iMarca, iModelo, iTipoPeriferico, iEstado, strCursor, strOrderBy)

CrearColumnas(oDataSet, strCursor)

dgResultados.DataSource = oDataSet.Tables(strCursor)
dgResultados.DataBind()

EstiladgResultados()
End Sub


Protected Sub CrearColumnas(ByVal oDataSet As DataSet, ByVal strCursor As String)
'defino las columnas q va a tener el datagrid dependiendo del datatable q luego se le asignara
Dim strColumnasYOrden(7) As String
Dim strNombreColumnas(7) As String
Dim strTipoColumnas(7) As String
Dim bVisibilidadColumnas(7) As Boolean

strColumnasYOrden(0) = "PER_IDPERIFERICO"
strNombreColumnas(0) = "Id periférico"
strTipoColumnas(0) = "BoundColumn"
bVisibilidadColumnas(0) = False

strColumnasYOrden(5) = "PER_NOMBREMAQUINA"
strNombreColumnas(5) = "Máquina"
strTipoColumnas(5) = "BoundColumn"
bVisibilidadColumnas(5) = True

strColumnasYOrden(2) = "PER_NSERIE"
strNombreColumnas(2) = "Número de serie"
strTipoColumnas(2) = "BoundColumn"
bVisibilidadColumnas(2) = True

strColumnasYOrden(1) = "TP_NOMBREPERIFERICO"
strNombreColumnas(1) = "Tipo periférico"
strTipoColumnas(1) = "BoundColumn"
bVisibilidadColumnas(1) = True

strColumnasYOrden(4) = "MOD_NOMBREMARCAMODELO"
strNombreColumnas(4) = "Modelo"
strTipoColumnas(4) = "BoundColumn"
bVisibilidadColumnas(4) = True

strColumnasYOrden(3) = "MAR_NOMBREMARCA"
strNombreColumnas(3) = "Marca"
strTipoColumnas(3) = "BoundColumn"
bVisibilidadColumnas(3) = True

strColumnasYOrden(6) = "TTEC_NOMBRETIPOTECLADO"
strNombreColumnas(6) = "Tipo teclado"
strTipoColumnas(6) = "BoundColumn"
bVisibilidadColumnas(6) = True

oUtilidades.OrdenarBorrarColumnasEnDataGrid(strCol umnasYOrden, strNombreColumnas, strTipoColumnas, bVisibilidadColumnas, dgResultados)

End Sub

y luego la clase oUtilidades tiene el siguiente método:

Public Sub OrdenarBorrarColumnasEnDataGrid(ByVal strColumnasYOrden() As String, ByVal strNombreColumnas() As String, ByVal strTipoColumnas() As String, ByVal bVisibilidadColumnas() As Boolean, ByVal oDataGrid As DataGrid)
Dim iColumnasYOrden As Integer = strColumnasYOrden.Length
Dim x As Integer

If strNombreColumnas.Length = iColumnasYOrden And strTipoColumnas.Length = iColumnasYOrden And bVisibilidadColumnas.Length = iColumnasYOrden Then

oDataGrid.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)
oDataGrid.Columns.Add(bc)
oDataGrid.Columns(x).Visible = bVisibilidadColumnas(x)
End Select
Next

End If

End Sub