我们在给GridView数据绑定的时候,要考虑到性能的问题,以及网络传输的问题。如果数据量太大的话,我们就要对其进行相应的处理了。
这个方法主要是: 只检索当前页要显示的数据,通过ObjectDataSource 与GridView进行绑定。
sqlsever 是用2层select实现, oracle 是用3层select 实现。
方法实现如下 Gridview 绑上一个ObjectDataSource ,ObjectDataSource的SelectCountMethod设置成GetNumberOfData,SelectMethod设置成GetDataByIndex。
Public
Function GetDataByIndex()
Function GetDataByIndex(ByVal startRowIndex As Integer, ByVal maximumRows As Integer) As HrDataSet.EMPLOYEESDataTable
Dim query As String = String.Format("SELECT EMPLOYEE_ID, FIRST_NAME, LAST_NAME FROM (SELECT EMPLOYEE_ID, FIRST_NAME, LAST_NAME ROWNUM AS LINE FROM EMPLOYEES ORDER BY EMPLOYEE_ID) EMP WHERE line BETWEEN {0} AND {1}", startRowIndex + 1, startRowIndex + maximumRows)
Dim sqlda As OracleDataAdapter = New OracleDataAdapter(query, Me.Connection)
Dim ods As New HrDataSet()
sqlda.Fill(ods.EMPLOYEES)
Return ods.EMPLOYEES
End Function
Public Function GetNumberOfData() Function GetNumberOfData() As Integer
Dim sqlcmd As OracleCommand = New OracleCommand("SELECT COUNT(*) FROM EMPLOYEES", Me.Connection)
Me.Connection.Open()
Dim rows As Integer
Try
rows = CType(sqlcmd.ExecuteScalar(), Integer)
Finally
Me.Connection.Close()
End Try
Return rows
End Function
Dim query As String = String.Format("SELECT EMPLOYEE_ID, FIRST_NAME, LAST_NAME FROM (SELECT EMPLOYEE_ID, FIRST_NAME, LAST_NAME ROWNUM AS LINE FROM EMPLOYEES ORDER BY EMPLOYEE_ID) EMP WHERE line BETWEEN {0} AND {1}", startRowIndex + 1, startRowIndex + maximumRows)
Dim sqlda As OracleDataAdapter = New OracleDataAdapter(query, Me.Connection)
Dim ods As New HrDataSet()
sqlda.Fill(ods.EMPLOYEES)
Return ods.EMPLOYEES
End Function
Public Function GetNumberOfData() Function GetNumberOfData() As Integer
Dim sqlcmd As OracleCommand = New OracleCommand("SELECT COUNT(*) FROM EMPLOYEES", Me.Connection)
Me.Connection.Open()
Dim rows As Integer
Try
rows = CType(sqlcmd.ExecuteScalar(), Integer)
Finally
Me.Connection.Close()
End Try
Return rows
End Function
需要代码的可以联系我