2012-06-07 91 views
1

我有一個很多列的網格視圖,都需要進行排序。我在那裏看到了一些片段,但是我不能讓他們中的任何一個人與我的例子一起工作。這是我到目前爲止。通用OrderBy函數

Protected Sub gvSearch_OnSorting(ByVal sender As Object, _ 
            ByVal e As GridViewSortEventArgs) 

    If Not Session("sort") Is Nothing Then 
     Dim strView = Session("sort").ToString() 
     gvSearch.DataSource = ApplySorting(Session("grid"), , "ASC") 
    End If 
End Sub 

我看到這個帖子,但我不知道要放什麼東西在作爲表達

Private Function ApplySorting(Of T, U)(_ 
    query As IQueryable(Of T), _ 
    predicate As Expression(Of Func(Of T, U)), _ 
    order As String) As IQueryable(Of T) 

    Dim ordered = TryCast(Query, IOrderedQueryable(Of T)) 
    If order = "ASC" Then 
     If ordered IsNot Nothing Then 
      Return ordered.ThenBy(predicate) 
     End If 
     Return query.OrderBy(predicate) 
    Else 
     If ordered IsNot Nothing Then 
      Return ordered.ThenByDescending(predicate) 
     End If 
     Return query.OrderByDescending(predicate) 
    End If 
End Function 

末級

我知道實際的順序會是什麼樣子

Dim GridValues As List(Of spSearchResult2Result) 
GridValues = db.spSearchResult2().ToList() 
GridValues.OrderBy(Function(x) x.CreateUserID) 

調用ApplySorting將包含e.SortExpression,但我不知道如何獲得它。任何幫助,將不勝感激。由於

回答

0

表達是

Function(x) x.CreateUserID 

gvSearch.DataSource = _ 
    ApplySorting(Session("grid"), Function(x) x.CreateUserID, "ASC") 
+0

會智能感知挑選呢?當我放入時,x沒有任何屬性 –

+0

'Session(「grid」)'返回一個'object',使得intellisense無法猜測'x'的成員。嘗試使用'DirectCast(Session(「grid」),TypeOfYourGrid)'。 –

+0

仍然沒有,我有這個 Dim grid As List(Of spSearchResult2Result)= DirectCast(Session(「grid」),List(Of spSearchResult2Result)) gvSearch.DataSource = ApplySorting(grid,Function(x)x。,「ASC 「) 仍然沒有智能感 –