SORT GENERICO
Olá amigos,
o código a seguir faz um sort genérico, porem não esta funcionando.
a linha Dim [property] As PropertyInfo = list.[GetType]().GetGenericArguments()(0).[GetType]().GetProperty(sortBy) retorna nothing.
alguém poderia ver oque há de errado com ela?
Public Function Sort(list As List(Of Employee), sortBy As [String], sortDirection As [String]) As List(Of Employee)
Dim [property] As PropertyInfo = list.[GetType]().GetGenericArguments()(0).[GetType]().GetProperty(sortBy)
If sortDirection = [Ô]ASC[Ô] Then
Return list.OrderBy(Function(e) [property].GetValue(e, Nothing))
End If
If sortDirection = [Ô]DESC[Ô] Then
Return list.OrderByDescending(Function(e) [property].GetValue(e, Nothing))
Else
Throw New ArgumentOutOfRangeException()
End If
End Function
desde já agradeço
o código a seguir faz um sort genérico, porem não esta funcionando.
a linha Dim [property] As PropertyInfo = list.[GetType]().GetGenericArguments()(0).[GetType]().GetProperty(sortBy) retorna nothing.
alguém poderia ver oque há de errado com ela?
Public Function Sort(list As List(Of Employee), sortBy As [String], sortDirection As [String]) As List(Of Employee)
Dim [property] As PropertyInfo = list.[GetType]().GetGenericArguments()(0).[GetType]().GetProperty(sortBy)
If sortDirection = [Ô]ASC[Ô] Then
Return list.OrderBy(Function(e) [property].GetValue(e, Nothing))
End If
If sortDirection = [Ô]DESC[Ô] Then
Return list.OrderByDescending(Function(e) [property].GetValue(e, Nothing))
Else
Throw New ArgumentOutOfRangeException()
End If
End Function
desde já agradeço
Nossa, eu acho isso tudo muito mais trabalhoso que simplesmente usar o método [Ô]OrderBy[Ô] e OrderByAscending[Ô]... Não entendi o que você pretende fazer com isso...
Oi Kerplunk, é trabalhoso.. mas é pra poupar trabalho.
preenchendo o datagridview com List , não tem a opção de ordenar as colunas de modo nativo.
com o sort genérico, posso passar pro DADOS.DATASOUCE o list ordenado pelo nome da coluna clicada no grid,
assim clicando uma vez ordena ASC, clicando novamente ordenas DESC,
eu programei com o SELECT CASE o nome de todos os campos do grid,mas seria interessante um modo genérico para isso.
preenchendo o datagridview com List , não tem a opção de ordenar as colunas de modo nativo.
com o sort genérico, posso passar pro DADOS.DATASOUCE o list ordenado pelo nome da coluna clicada no grid,
assim clicando uma vez ordena ASC, clicando novamente ordenas DESC,
eu programei com o SELECT CASE o nome de todos os campos do grid,mas seria interessante um modo genérico para isso.
Para isso, você deveria implementar um SortableBindingList<T>
Tópico encerrado , respostas não são mais permitidas