AspNetPager结合ListView进行高效分页

环境:VS2010,SQLServer2008 express

使用控件:ListView,AspNetPager v7.32

AspNetPager分页存储过程

ALTER PROCEDURE [dbo].[fy] 
(@startIndex int,
@endIndex int)
AS
BEGIN
 with temptbl as (
SELECT ROW_NUMBER() OVER (ORDER BY UGID asc)AS Row, * from DJ_UserUnit )
 SELECT * FROM temptbl where Row between @startIndex and @endIndex
END

AspNetPager分页控件获取记录总数存储过程

ALTER PROCEDURE [dbo].[fycount]

AS
BEGIN

select count(*) from DJ_UserUnit;
--RETURN

END

以上两个存储过程是必须的。也可以只要第一个分页存储过程,第二个总数用SQL语句。

下面开始编程:

数据层:

DAL数据层基本操作方法:

第一个ExecuteScalar为获取记录总数的方法:

        #region 返回执行的SQL语句或存储过程的第一行第一列,忽视其它行列,返回类型为object
        /// <summary>
        /// 返回执行的SQL语句或存储过程的第一行第一列,忽视其它行列,返回类型为object
        /// </summary>
        /// <param name="cmdText">存储过程或SQL语句</param>
        /// <param name="procType">cmd类型,CommandType.StoredProcedure为存储过程,CommandType.Text为SQL</param>
        /// <returns>返回类型为object</returns>
        public object ExecuteScalar(string cmdText, CommandType procType)
        {
            object res;
            using(cmd=new SqlCommand(cmdText,GetConn()))
            {
                cmd.CommandType = procType;
                res=cmd.ExecuteScalar();
            }
            return res;
        }
        #endregion

第二个ExecuteQuery为分页存储过程操作方法

        #region 执行带参数查询SQL语句或存储过程,返回DataTable
        /// <summary>
        /// 执行带参数查询SQL语句或存储过程,返回DataTable
        /// </summary>
        /// <param name="cmdText">存储过程名或SQL语句</param>
        /// <param name="paras">参数</param>
        /// <param name="procType">cmd类型,CommandType.StoredProcedure为存储过程,CommandType.Text为SQL</param>
        /// <returns>返回DataTable</returns>
        public DataTable ExecuteQuery(string cmdText, SqlParameter[] paras, CommandType procType)
        {
            //TODO:执行带参数查询SQL语句或存储过程
            DataTable dt = new DataTable();
            cmd = new SqlCommand(cmdText, GetConn());
            cmd.CommandType = procType;  //这里判断是否是存储过程。CommandType.StoredProcedure为存储过程,CommandType.Text为SQL
            cmd.Parameters.AddRange(paras);
            using (sdr = cmd.ExecuteReader(CommandBehavior.CloseConnection))
            {
                dt.Load(sdr);
            }
            return dt;
        }
        #endregion

结合以上两个基本方法,编写BLL业务逻辑层分页包装方法:

        #region 获得记录总数
        /// <summary>
        /// 获得记录总数
        /// </summary>
        /// <returns></returns>
        public int UserUnit_Count() {
            int res;
            string cmdText = "fycount";
            res = (int)sqlhelper.ExecuteScalar(cmdText, CommandType.StoredProcedure);
            return res;
        }
        #endregion

        #region 分页显示
        /// <summary>
        /// 分页显示
        /// </summary>
        /// <param name="startIndex">AspNetPager开始索引</param>
        /// <param name="endIndex">AspNetPager结束索引</param>
        /// <returns></returns>
        public DataTable fy(int startIndex, int endIndex)
        {
            DataTable dta = new DataTable();
            string cmdText = "fy";
            SqlParameter[] paras = new SqlParameter[] { 
                new SqlParameter("@startIndex",startIndex),
                new SqlParameter("@endIndex",endIndex)
            };
            dta = sqlhelper.ExecuteQuery(cmdText, paras, CommandType.StoredProcedure);
            return dta;
        }
        #endregion

有了这些方法,就可以开始编写界面层了。

结合母版,随便写个ListView,然后拉入AspNetPager控件。

拉入AspNetPager控件的方法:

1、将AspNetPager.dll和AspNetPager.xml放入界面层Bin目录,然后引用AspNetPager.dll

2、在vs2010工具栏上点右键,选择“选择项”,然后选择AspNetPager.dll,这样,它就进入了工具栏。

界面前台,没什么说的,除了母版,就是一个listview和一个aspnetpager:

<%@ Page Title="" Language="C#" MasterPageFile="~/manage.Master" AutoEventWireup="true" CodeBehind="test.aspx.cs" Inherits="website.test" %>
<%@ Register assembly="AspNetPager" namespace="Wuqi.Webdiyer" tagprefix="webdiyer" %>
<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="MenuTitle" runat="server">
</asp:Content>
<asp:Content ID="Content3" ContentPlaceHolderID="SelectMenu" runat="server">
</asp:Content>
<asp:Content ID="Content4" ContentPlaceHolderID="Content" runat="server">
    <asp:ListView ID="ListView1" runat="server" DataKeyNames="UGID" InsertItemPosition="LastItem">
        <AlternatingItemTemplate>
            <tr style="background-color: #FAFAD2;color: #284775;">
                <td>
                    <asp:Button ID="DeleteButton" runat="server" CommandName="Delete" Text="删除" />
                    <asp:Button ID="EditButton" runat="server" CommandName="Edit" Text="编辑" />
                </td>
                <td>
                    <asp:Label ID="UGIDLabel" runat="server" Text='<%# Eval("UGID") %>' />
                </td>
                <td>
                    <asp:Label ID="UNameLabel" runat="server" Text='<%# Eval("UName") %>' />
                </td>
            </tr>
        </AlternatingItemTemplate>
        <EditItemTemplate>
            <tr style="background-color: #FFCC66;color: #000080;">
                <td>
                    <asp:Button ID="UpdateButton" runat="server" CommandName="Update" Text="更新" />
                    <asp:Button ID="CancelButton" runat="server" CommandName="Cancel" Text="取消" />
                </td>
                <td>
                    <asp:Label ID="UGIDLabel1" runat="server" Text='<%# Eval("UGID") %>' />
                </td>
                <td>
                    <asp:TextBox ID="UNameTextBox" runat="server" Text='<%# Bind("UName") %>' />
                </td>
            </tr>
        </EditItemTemplate>
        <EmptyDataTemplate>
            <table runat="server" 
                style="background-color: #FFFFFF;border-collapse: collapse;border-color: #999999;border-style:none;border-width:1px;">
                <tr>
                    <td>
                        未返回数据。</td>
                </tr>
            </table>
        </EmptyDataTemplate>
        <InsertItemTemplate>
            <tr style="">
                <td>
                    <asp:Button ID="InsertButton" runat="server" CommandName="Insert" Text="插入" />
                    <asp:Button ID="CancelButton" runat="server" CommandName="Cancel" Text="清除" />
                </td>
                <td>
                     </td>
                <td>
                    <asp:TextBox ID="UNameTextBox" runat="server" Text='<%# Bind("UName") %>' />
                </td>
            </tr>
        </InsertItemTemplate>
        <ItemTemplate>
            <tr style="background-color: #FFFBD6;color: #333333;">
                <td>
                    <asp:Button ID="DeleteButton" runat="server" CommandName="Delete" Text="删除" />
                    <asp:Button ID="EditButton" runat="server" CommandName="Edit" Text="编辑" />
                </td>
                <td>
                    <asp:Label ID="UGIDLabel" runat="server" Text='<%# Eval("UGID") %>' />
                </td>
                <td>
                    <asp:Label ID="UNameLabel" runat="server" Text='<%# Eval("UName") %>' />
                </td>
            </tr>
        </ItemTemplate>
        <LayoutTemplate>
            <table runat="server" width="100%">
                <tr runat="server">
                    <td runat="server">
                        <table ID="itemPlaceholderContainer" runat="server" border="1" 
                            style="background-color: #FFFFFF;border-collapse: collapse;border-color: #999999;border-style:none;border-width:1px;font-family: Verdana, Arial, Helvetica, sans-serif;" width="100%">
                            <tr runat="server" style="background-color: #FFFBD6;color: #333333;">
                                <th runat="server">
                                </th>
                                <th runat="server">
                                    UGID</th>
                                <th runat="server">
                                    UName</th>
                            </tr>
                            <tr ID="itemPlaceholder" runat="server">
                            </tr>
                        </table>
                    </td>
                </tr>
                <tr runat="server">
                    <td runat="server" 
                        style="text-align: center;background-color: #FFCC66;font-family: Verdana, Arial, Helvetica, sans-serif;color: #333333;">
                    </td>
                </tr>
            </table>
        </LayoutTemplate>
        <SelectedItemTemplate>
            <tr style="background-color: #FFCC66;font-weight: bold;color: #000080;">
                <td>
                    <asp:Button ID="DeleteButton" runat="server" CommandName="Delete" Text="删除" />
                    <asp:Button ID="EditButton" runat="server" CommandName="Edit" Text="编辑" />
                </td>
                <td>
                    <asp:Label ID="UGIDLabel" runat="server" Text='<%# Eval("UGID") %>' />
                </td>
                <td>
                    <asp:Label ID="UNameLabel" runat="server" Text='<%# Eval("UName") %>' />
                </td>
            </tr>
        </SelectedItemTemplate>
    </asp:ListView>
    </asp:Content>
<asp:Content ID="Content5" ContentPlaceHolderID="Footer" runat="server">
<%--AspNetPager样式,可随意调节--%>
    <webdiyer:AspNetPager ID="AspNetPager1" runat="server" FirstPageText="首页" 
        LastPageText="尾页" NextPageText="下一页" PageIndexBoxType="DropDownList" 
        PrevPageText="上一页" ShowPageIndexBox="Auto" SubmitButtonText="Go" 
        TextAfterPageIndexBox="页" TextBeforePageIndexBox="转到" 
        onpagechanged="AspNetPager1_PageChanged" 
        CustomInfoHTML="共%PageCount%页,当前为第%CurrentPageIndex%页,每页%PageSize%条" 
        ShowCustomInfoSection="Left">
    </webdiyer:AspNetPager>
</asp:Content>

界面后台,以下三个方法,必不可少:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using BLL;
using Model;

namespace website
{
    public partial class test : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                int totalOrders = (int)new DJ_UserUnitManager().UserUnit_Count();   //获取记录集总数
                AspNetPager1.RecordCount = totalOrders;     //将总数赋给AspNetPager,此为不可少的参数
                bindData();
            }
        }

        void bindData()     //ListView绑定
        {
            ListView1.DataSource = new DJ_UserUnitManager().fy(AspNetPager1.StartRecordIndex, AspNetPager1.EndRecordIndex);     //通过分页存储过程进行ListView数据绑定。AspNetPager1.StartRecordIndex为开始参数,AspNetPager1.EndRecordIndex为结束参数,两参数为AspNetPager自带
            ListView1.DataBind();
        }

        protected void AspNetPager1_PageChanged(object src, EventArgs e)    //分页控件事件,当分页时,显示控件ListView跟着变化。缺此方法不会变化。
        {
            bindData();
        }
    }
}

通过上面界面后台的内容可以看出,aspnetpager的基本操作只需要三个部份,一、获取记录总数,二、使用aspnetpager的开始结束索引进行数据绑定,第三,点击分页序号后再次进行绑定,进行分页显示。很简单吧。

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看REaDME.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值