簡體   English   中英

使用linq進行Datalist分頁

[英]Datalist paging with linq

我正在創建一個使用Linqfor數據訪問的頁面,我正在使用DataList來顯示數據。 我如何使用Linq進行數據分頁? 請閱讀以下簡單代碼:

我通常使用PagedDatasource,但這似乎只適用於DataTable。

這是我的Linq返回與Datalist綁定的Datatable:

公共共享函數GetStudentList()作為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

在頁面后面的代碼中:

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

你會發現方法.Skip()和.Take()非常有用。

我注意到你從項目中提供了一些代碼,所以這里有關於如何實現這些方法的更新。

在獲取數據的方法中,執行以下操作:

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

然后提供CurrentPagePageSize變量作為方法的參數。 (您不希望將它們構建到數據訪問中,因為它們可能因站點的不同部分而異...)

您需要使用Skip()和Take()方法查看使用LINQ的SQL分頁

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM