CS窗体程序数据列表分页
以前,觉得winform程序分页很无趣,也没实际意义,直到近期的项目实践中让我认识到原来winform数据列表分页也是非常有必要的,因为由于数据量过大的情况,当窗体在初始加载数据的时候如果不做条件的限制就会是程序假死状态,甚至直接崩溃,那么问题来了,究竟如何做才能达到性能上的优化呢,下面具体讲解实现思路,当然做法不一,如果有大佬有更好的实现方法,还望不吝赐教。
就以Orcle数据库为例,近期的项目数据库运用Oracle数据库,数据量达到百万级别的,也查找了一些数据性能优化的方法,可是还是不能根本解决问题,最后认真思索一番,认为如果数据批量请求不就可以达到目的了吗,后来查询了一系列关于Oralce数据库的分页方法,最终整合了一下达到分页的效果,具体见如下代码:
public DataTable InstockInfo(int pagesize, int pagenum)
{
int startnum = pagesize * pagenum - (pagesize - 1);
int endnum = pagesize * pagenum;
string sql = @" SELECT * FROM (SELECT tab.*,ROWNUM AS CON FROM ( SELECT INSTOCK_ORDER_NO AS ORDER_NO,(SELECT NAME FROM t_auth_organization WHERE ID=DEPT_ID) AS WH_NAME,INVOICE_NO,PACKAGE_NO AS TRANS_ORDER_NO,(SELECT SUM(BUY_NUM) FROM T_BUSIS_INSTOCK_DETAIL WHERE INSTOCK_ORDER_NO=INS.INSTOCK_ORDER_NO) AS BUY_NUM,SUP_ACCT_CODE,(CASE INSTOCK_STATUS WHEN '0' THEN '未验货' WHEN'1' THEN '已验货' WHEN '2' THEN '已入库' ELSE NULL END)AS STATUS,CREATEBY_NAME AS CREATE_NAME, CREATE_TIME ,(CASE CHECK_STATUS WHEN '0' THEN '否' WHEN '1' THEN '是' ELSE NULL END )AS CHECK_STATUS,DEPT_ID, ZN_CODE,(CASE BILL_SOURCE WHEN '1' THEN '同步' WHEN'2' THEN 'PC自建' WHEN '3' THEN 'PDA自建'WHEN '4' THEN '扣现货' ELSE NULL END) AS BILL_SOURCE,SUP_ACCT_ID FROM T_BUSIS_INSTOCK INS WHERE INSTOCK_TYPE='2' AND INSTOCK_STATUS!='2' ORDER BY CREATE_TIME DESC ) tab WHERE ROWNUM <=" + endnum + ") WHERE CON >="+ startnum + "";
return OracleHelper.ExecuteDataTable(sql);
}
可以看到,当初始加载数据的时候,需要传入页码,每页显示数据量两个参数即可,这样就达到了我们在初次加载数据的时候快速的处理数据。同理,SqlServer数据库的处理方式应该也大致类似,这里就不做多的解释了,就留给机智的你去实现了,哈哈O(∩_∩)O哈哈~
CS窗体程序数据列表分页的更多相关文章
- wepy小程序实现列表分页上拉加载(2)
第一篇:wepy小程序实现列表分页上拉加载(1) 本文接着上一篇内容: 4.优化-添加加载动画 (1)首先写加载动画的结构和样式 打开list.wpy文件 template结构代码: <temp ...
- wepy小程序实现列表分页上拉加载(1)
使用wepy开发微信小程序商城第一篇:项目初始化 使用wepy开发微信小程序商城第二篇:路由配置和页面结构 列表页效果图: 1.新建列表页 (1)在pages里面新建一个list.wpy文件 初始代码 ...
- 【WPF】闲着没事,写了个支持数据列表分页的帮助类
支持分页的MVVM组件大家可以网上找,老周这个类只是没事写来娱乐一下的,主要是功能简单,轻量级,至少它满足了我的需求,也许还有未知的 bug . 这个类支持对数据列表进行分页处理,原理是利用 Skip ...
- 【C/C++学院】0723-32位与64位/调戏窗体程序/数据分离算法/内存检索/二分查找法/myVC
[送给在路上的程序猿] 对于一个开发人员而言,能够胜任系统中随意一个模块的开发是其核心价值的体现. 对于一个架构师而言,掌握各种语言的优势并能够运用到系统中,由此简化系统的开发,是其架构生涯的第一步. ...
- 微信小程序开发——列表分页上拉加载封装实现(订单列表为例,订单状态改变后刷新列表滚动位置不变)
业务需求: 业务需求是给订单列表添加分页功能,也就是上拉加载这种每次只请求加载固定数量的数据. 需求分析: 对业务来说就是简单的分页上拉加载,但是对于技术实现来说,除了要处理分页数据的累加加载,还要处 ...
- SNF软件开发机器人-子系统-功能-数据列表分页与不分页-瀑布式分页-如何配置?
[列表]分页 1.效果展示: (1)不分页 (2)普通分页 (3)瀑布式分页 2.使用说明: 打开显示页面,点击开发者选项的简单配置按钮.在功能表信息中选择需要的分页方式.普通分页和瀑布式分页需要配合 ...
- 从后端到前端之Vue(四)小试牛刀——真实项目的应用(树、tab、数据列表和分页)
学以致用嘛,学了这么多,在真实项目里面怎么应用呢?带着问题去学习才是最快的学习方式.还是以前的那个项目,前后端分离,现在把前端换成vue的,暂时采用脚本化的方式,然后在尝试工程化的方式. 现在先实现功 ...
- 微信小程序中的加载更多(即列表分页)
1.app.json中: "window": { "enablePullDownRefresh": true //是否开启当前页面下拉刷新 } 2.wxml中: ...
- .net窗体程序的基础知识及详细笔记
第一章:初识Windows程序 1.1:第一个wondows程序 1.1.1:认识windows程序 Form1.cs:窗体文件:程序对窗体编写的代码一般都存放在这个文件(还有拖动控件时的操作和布局, ...
随机推荐
- win10 uwp 使用油墨输入
win10可以很简单在我们的app使用自然输入,这篇文章主要翻译https://blogs.windows.com/buildingapps/2015/09/08/going-beyond-keybo ...
- Python学习笔记(十)
Python学习笔记(十): 装饰器的应用 列表生成式 生成器 迭代器 模块:time,random 1. 装饰器的应用-登陆练习 login_status = False # 定义登陆状态 def ...
- NOIP2015运输计划(树上前缀和+LCA+二分)
Description 公元 2044 年,人类进入了宇宙纪元. L 国有 n 个星球,还有 n−1 条双向航道,每条航道建立在两个星球之间,这 n−1 条航道连通了 L 国的所有星球. 小 P 掌管 ...
- 关于EF Code First模式不同建模方式对建表产生的影响
今天在学EF Code First模式的时候,发现几个很有趣的问题,问题如下: 1.当编写玩实体后,不指定任何主键约束,EF会找长的最像Id的,然后设置其为主键,验证代码如下: //User类 cla ...
- CentOS(linux发行版)系统安装中文输入法:
安装步骤: 1>.打开终端界面,使用su - root切换到超级用户,然后输入yum install"@Chinese support",回车. 2>.中间安装过程提示 ...
- yii2之DetailView小部件
DetailView小部件用于展示单条数据记录,可配置属性很少,使用也很简单,直接贴代码,一看就懂! yii小部件数据小部件DetailView的使用示例: <?= DetailView::wi ...
- python学习笔记(十一)之函数
牛刀小试: 定义一个无参函数 >>> def myFirstFunc(): ... print("Hello python") ... print("h ...
- PHP内写css样式
<1>php的两种输出方式 1,echo: 2,print; 栗子: <?php echo:"你好,我的名字是LHH"; print:"你好,我的名字是 ...
- Winsock网络编程笔记(4)----基本的理论知识
前面的笔记记录了Winsock的入门编程,领略了Winsock编程的乐趣..但这并不能算是掌握了Winsock,加深理论知识的理解才会让后续学习更加得心应手..因此,这篇笔记将记录一些有关Winsoc ...
- AngularJS学习篇(十)
AngularJS Select(选择框) 使用 ng-options 创建选择框 在 AngularJS 中我们可以使用 ng-option 指令来创建一个下拉列表,列表项通过对象和数组循环输出,如 ...