2009-04-18 4 views
5

データアクセスを使用するページを作成していますが、DataListを使用してデータを表示しています。 Linqを使ってデータページングを行うにはどうすればいいですか?以下の簡単なコードをお読みください:linqを使用したデータリストページング

私は通常、PagedDatasourceを使用しますが、これはDataTableでのみ動作するようです。ページの後ろにコードでの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 

として

公共共有機能GetStudentList():

は、ここに私のLINQは、データリストにバインドされたDataTableを返すことです

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 

答えて

8

.Skip() and .Take()のメソッドが非常に便利です。

私はあなたのプロジェクトからいくつかのコードを提供していることに気付きました。そこで、これらのメソッドの実装方法に関するアップデートがあります。データを取得するためのあなたの方法で

、次の手順を実行します。

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

次にメソッドに引数としてCurrentPagePageSize変数を提供しています。 (サイトのさまざまな部分で異なる可能性があるため、データアクセスにそれらを組み込むことは望ましくありません)

+0

データが最大限に達しているかどうかを確認するにはどうすればいいですか? –

+0

いくつかの組み合わせで作業しました。今は私のために働いています。ご回答有難うございます :) –

関連する問題