我有过类似的经历。建议使用datareader。数据量多的话建议只取出要显示页一页的数据进行绑定。不然的话会死人的。
Dim start As Integer = CurrentPageIndex * PageSize
Dim size As Integer = Math.Min(PageSize, ItemCount - start)
Dim CurrentPageDataSource As IList = New ArrayList
For i As Integer = 0 To size - 1
CurrentPageDataSource.Add(OriginalDataSource(start + i))
Next i