26/09/2006, 08:03
|
| | 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 |