存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,存储在数据库中,经过第一次编译后再次调用不需要再次编译,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。存储过程是数据库中的一个重要对象,任何一个设计良好的数据库应用程序都应该用到存储过程。存储过程优点:

    1、重复使用。存储过程可以重复使用,从而可以减少数据库开发人员的工作量。
    2、减少网络流量。存储过程位于服务器上,调用的时候只需要传递存储过程的名称以及参数就可以了,因此降低了网络传输的数据量。
    3、安全性。参数化的存储过程可以防止SQL注入式攻击。

    本文演示使用SqlServer存储过程(多表查询,多条件排序),SqlServer数据访问辅助类、Repeater控件呈现数据以及分页,自定义服务器控件开发,效果如下图1所示。在随附的代码下载中提供了完整的源代码。

图1 效果图

演示程序结构

创建演示程序,我在Visual Studio 2013 选择新建两个项目,第一,C#空白网站项目将该网站命名为TestWeb,添加相关文件夹、CSS文件,JS文件;第二,C#类库命名为TestRun.WebPagerControls,封装分页UI,分页事件。图2 显示了演示程序的整体结构。

图2 程序的整体结构

使用SqlServer2008,创建演示数据TestRunDB,添加数据表dbo.tb_Category(产品分类),dbo.tb_Product(产品信息)以及演示数据、分页存储过程dbo.PROC_QueryByPager。图3 显示演示数据库内容

图3 演示数据库内容

程序执行

显示页面Default.aspx

在Default.aspx显示页面使用两个控件呈现数据以及分页,

第一,Repeater数据控件

该控件优点:是一个完全的开发性控件,可以自如的显示用户自定义的显示方式,但是缺点:不支持分页、排序、编辑,仅提供重复模板内容。

第二,自定义服务器分页控件

该控件的优点允许完全控制所生成的 HTML,提供更好的设计时支持。可以通过如下语句使用自定义服务器控件,

注册控件<%@ Register Assembly="TestRun.WebPagerControls" Namespace="TestRun.WebPagerControls" TagPrefix="cc1" %>

使用控件<cc1:WebPager ID="UPager1" runat="server" PagerStyle="NextPrev" ControlToPaginate="rptData" PageSize="5" OnPageIndexChanged="UPager1_PageIndexChanged" />

显示页面Defualt.aspx代码,如下图4所示

图4 显示页面代码

显示页面Defualt.aspx.cs定义了两个方法,第一BindData方法用于获取数据,第二UPager1_PageIndexChanged是分页事件。Defualt.aspx.cs定义代码如下图5所示

图5 显示页面Defualt.aspx.cs代码

自定义服务器分页控件的定义

自定义服务器控件的代码如下图6所示,由于定义的代码比较多,这里就不全部展开了

图6 显示Pager.cs代码

执行分页存储过程

在QueryProvider.cs文件定义执行分页存储过程,使用SqlHelper辅助类来执行访问数据库。SqlHelper用于简化你重复的去写那些数据库连(SqlConnection),SqlCommand,SqlDataReader等等。SqlHelper 封装过后通常是只需要给方法传入一些参数如数据库连接字符串,SQL参数等,就可以访问数据库了,很方便。代码如下图7所示

图7 显示QueryProvider.cs代码

分页存储过程的定义

在TestRunDB数据库中定义的分页存储过程如下图8所示

图8 显示分页存储过程的定义语句

结束

  本文演示使用SqlServer存储过程(多表查询,多条件排序),SqlServer数据访问辅助类、Repeater控件呈现数据以及分页,自定义服务器控件开发,效果如下图1所示。在随附的代码下载中提供了完整的源代码。完整的源代码下载链接

SqlServer分页存储过程(多表查询,多条件排序),Repeater控件呈现数据以及分页的更多相关文章

  1. Repeater控件使用(含删除,分页功能)

    Repeater控件使用(含删除,分页功能) 摘自:http://www.cnblogs.com/alanliu/archive/2008/02/25/914779.html 前臺代碼 <%@ ...

  2. SqlServer:SqlServer(存储过程动态表查询(取消返回值),事务处理,批量还原sqlserver备份,强制删除被占用的数据库)

    1.存储过程动态表查询 USE [NETWORKING_AUDIT] GO /****** Object: StoredProcedure [dbo].[impConfigInfo] Script D ...

  3. 使用Sql分页方法给Repeater控件分页的方法

    页面代码 <div class="bookList"> <asp:Repeater ID="rpBooks" runat="serv ...

  4. repeater控件实现分页

    repeater控件实现排序的方法,今天我再向大家介绍repeater控件如何实现分页的效果. 分页分为真分页和假分页. 真分页:控件上一页需要显示多少数据,就从数据库取出并绑定多少数据,每次换页时都 ...

  5. asp.net动态网站repeater控件使用及分页操作介绍

    asp.net动态网站repeater控件使用及分页操作介绍 1.简单介绍 Repeater 控件是一个容器控件,可用于从网页的任何可用数据中创建自定义列表.Repeater 控件没有自己内置的呈现功 ...

  6. repeater控件自定义Url分页带参数

    repeater控件的效果图如下: 该页面实现的功能如下: 1.上下分页,(也可以带首页和末页,我只是禁掉了没用) 2.根据用户输入的指定分页索引进行跳转 3.根据筛选数据的参数进行URL分页的参数传 ...

  7. Repeater控件的分页实现

    本文讲解Repeater控件与PagedDataSource相结合实现其分页功能.PagedDataSource 类封装那些允许数据源控件(如 DataGrid.GridView)执行分页操作的属性. ...

  8. 使用Repeater控件实现三层嵌套以及分页效果

    PS: 第一次用Repeater控件 记录一下 请忽略我的命名不规范  请忽略我的最终效果图(太丑了) 需要用到的朋友可以自行调整的漂亮点 ====================最终效果图===== ...

  9. 使用ScriptX控件实现IE浏览器分页打印功能

    之前讲过js调用ie浏览器自带打印的用法,今天讲使用插件的方式.浏览器自带打印不能控制页边距.页眉页脚等选项,尤其是如果分页打印的话,无法自动将前一页标题带到本页,所以不适用多页打印的功能.使用Scr ...

随机推荐

  1. MySQL面试(二)

    1.为什么索引遵循最左匹配原则? 当B+树的数据项是符合的数据结构,比如(name,age,sex)的时候,B+树是按照从左到右的顺序建立搜索树的.比如当(张三,20,F)这样的数据来检索的时候,b+ ...

  2. linux 选择 ioctl 命令

    在为 ioctl 编写代码之前, 你需要选择对应命令的数字. 许多程序员的第一个本能的反 应是选择一组小数从0或1 开始, 并且从此开始向上. 但是, 有充分的理由不这样做. ioctl 命令数字应当 ...

  3. get_free_page 和其友

    如果一个模块需要分配大块的内存, 它常常最好是使用一个面向页的技术. 请求整个页也 有其他的优点, 这个在 15 章介绍. 为分配页, 下列函数可用: get_zeroed_page(unsigned ...

  4. 2018-2-13-win10-UWP--蜘蛛网效果

    title author date CreateTime categories win10 UWP 蜘蛛网效果 lindexi 2018-2-13 17:23:3 +0800 2018-2-13 17 ...

  5. linux PCI 寻址

    每个 PCI 外设有一个总线号, 一个设备号, 一个功能号标识. PCI 规范允许单个系统占 用多达 256 个总线, 但是因为 256 个总线对许多大系统是不够的, Linux 现在支持 PCI 域 ...

  6. 洛谷——P1540机器翻译(队列操作)

    #include<bits/stdc++.h> using namespace std; int main(){ queue<int> num;//存放的内存 ]; int m ...

  7. .NET Core + docker入门

    下载安装docker docker客户端,今天vpn小水管实在是受不了,于是找了国内的下载地址 配置docker加速器 参考博文Docker for windows10 配置阿里云镜像 docker入 ...

  8. .NET进阶篇07-.NET和COM

    知识需要不断积累.总结和沉淀,思考和写作是成长的催化剂 内容目录 一.COM和.NET元数据内存管理接口注册线程编组二..NET客户端调用COM组件三.COM客户端调用.NET组件四.嵌入互操作类型五 ...

  9. NI LabVIEW 编程规范

    LabVIEW程序编写应该遵循哪些规范? 遵循这些规范有什么好处? 具体细节是什么? 针对上面三个问题一一解答: 一.LabVIEW程序编写应该遵循哪些规范? (1)前面板.后面板控件整齐,尽可能在一 ...

  10. Linux 创建网络会话

    Linux 创建网络会话 RHEL7系统支持网络会话功能,允许用户在多个配置文件中快速切换(非常类似于firewalld防火墙服务中的区域技术).如果我们在公司网络中使用笔记本电脑时需要手动指定网络的 ...