探讨关于ASP.NET翻页的性能问题
大家都知道,DataSet消耗系统资源很大,那用SqlDataReader来处理是否会好一些呢?
我先用SqlDataReader查询需要显示的数据的ID集合 如:strTemp_id= "2,3,4,6,8,12,24,56,57,78 "
并把该值赋值给页面控件Temp_id,以便翻页时不再查询
再在strTemp_id中根据每页显示的数量和本次是显示页次在来判断出本页显示的Id几个str_Id
最后用SqlDataReader查询ID值包含在str_Id中的数据并绑定
' ' ' ' ' ' ' ' ' ' ' ' ' ' 'Repeater.aspx ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' '
<asp:Repeater ID= "My_Rep " runat= "server ">
<ItemTemplate>
<%#DataBinder.Eval(Container.DataItem, "Job_id ")%>
<%#DataBinder.Eval(Container.DataItem, "Job_desc ")%>
</ItemTemplate>
</asp:Repeater>
<asp:Label ID= "PageButton_Lab " runat= "server "> </asp:Label>
<form name= "myForm " method= "post ">
<input id= "Temp_id " type= "hidden " name= "Temp_id " runat= "server ">
<script language= "javascript ">
function PageToUrl(url)
{
document.myForm.action=url;
document.myForm.submit();
}
</script>
</form>
' ' ' ' ' ' ' ' ' 'Repeater.aspx.vb ' ' ' ' ' ' ' ' ' ' '
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Not IsPostBack Then
My_Rep_DataBind()
End If
End Sub
Sub My_Rep_DataBind()
Dim strTemp_id As String = Request.Form( "Temp_id ") '该变量用来判断是否是第一次显示页面
If strTemp_id = " " Then '如果为空即为第一次查询
str_Sql = "select job_id from jobs where job_Id> 0 " & str_ssSql & " order by job_id "