日期:2014-05-18  浏览次数:20456 次

探讨关于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 "