2009-04-18 16 views
5

Tworzę stronę, która używa Linq do dostępu do danych i używam DataList do wyświetlania danych. Jak używać Linq do stronicowania danych? Przeczytaj prosty kod poniżej:Paging pageing z linq

Zwykle używam PagedDatasource, ale to tylko wydaje się działać z DataTable.

Oto mój Linq aby powrócić DataTable, który jest związany z DataList:

Public Shared GetStudentList function() Jako DataTable

Dim db As New DemoDataClassesDataContext() 

    Dim query = From st In db.students _ 
       Order By st.st_studentid Ascending _ 
       Select st 

    Dim dtStudent = New DataTable("myst") 


    dtStudent.Columns.Add("st_id", GetType(Integer)) 
    dtStudent.Columns.Add("st_userid", GetType(Guid)) 
    dtStudent.Columns.Add("st_studentid", GetType(Integer)) 
    dtStudent.Columns.Add("st_firstname", GetType(String)) 
    dtStudent.Columns.Add("st_lastname", GetType(String)) 
    dtStudent.Columns.Add("st_gender", GetType(String)) 
    dtStudent.Columns.Add("st_email", GetType(String)) 


    For Each q In query 
     dtStudent.Rows.Add(New Object() {q.st_id, q.st_userid, q.st_studentid, q.st_firstname, q.st_lastname, q.st_gender, q.st_email}) 
    Next 

    Return dtStudent 

End Function 

W kodzie za strony:

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

    If Not Page.IsPostBack() Then 
     LoadData() 
    End If 

End Sub 

Private Sub LoadData() 
    dsStduent = da_Student.GetStudentList() 
    dt_Student.DataSource = dsStduent 
    dt_Student.DataBind() 

End Sub 

Odpowiedz

8

Bardzo przydatne będą metody .Skip() and .Take().

Zauważyłem, że dostarczyłeś kod z projektu, więc tutaj jest aktualizacja, w jaki sposób powinieneś wdrożyć te metody.

W swoim sposobie uzyskiwania danych, wykonaj następujące czynności:

Dim query = (From st In db.students _ 
      Order By st.st_studentid Ascending _ 
      Select st).Skip((CurrentPage - 1) * PageSize).Take(PageSize) 

następnie podaj CurrentPage i PageSize zmienne jako argumenty do metody. (Nie chcesz budować ich na dostęp do danych, ponieważ mogą się one różnić w różnych częściach witryny ...)

+0

Jak ustalić, czy dane osiągnęły maksymalny limit, tj. Jesteśmy na ostatniej stronie? –

+0

Przeanalizowano niektóre kombinacje. Teraz działa dla mnie. Dzięki za odpowiedź :) –