winform分页管理
注意:其中可能用到部分自定义的扩展方法,在使用中需自己修改一下

/// <summary>
/// 分页管理
/// </summary>
public class Paging
{
#region Property private int pageCount; //总页数
/// <summary>
/// 每页数
/// </summary>
public int PageSize = ;
/// <summary>
/// 总数
/// </summary>
public int Total = ;
/// <summary>
/// 当前页数
/// </summary>
public int PageIndex = ; public int PageCount
{
get
{
if (PageSize <= )
PageSize = ;
if (Total % PageSize == )
{
pageCount = Total / PageSize;
}
else
{
pageCount = Total / PageSize + ;
}
return pageCount;
}
set
{
pageCount = value;
} }
#endregion /// <summary>
/// 分页操作,name默认为"",否则为操作控件的Name
/// </summary>
/// <param name="bn">分页控件菜单</param>
/// <param name="name">操作类型</param>
public void SplitMenu(BindingNavigator bn, string name)
{
#region Name
string tstbPageSize = bn.Items[].Name;
string tstbPageIndex = bn.Items[].Name;
string tslPageCount = bn.Items[].Name;
string tsbFirst = bn.Items[].Name;
string tsbPageUp = bn.Items[].Name;
string tsbPageDown = bn.Items[].Name;
string tsbLast = bn.Items[].Name;
#endregion try
{
this.PageSize = bn.Items[tstbPageSize].Text.ToString().ToInt();
this.PageIndex = bn.Items[tstbPageIndex].Text.ToString().ToInt();
#region action
if (name == tsbFirst)
PageIndex = ;
else if (name == tsbPageUp)
PageIndex--;
else if (name == tsbPageDown)
PageIndex++;
else if (name == tsbLast)
PageIndex = PageCount;
else if ((name == tstbPageIndex) || (name == tstbPageSize) || (name == "delete"))
{
int index = bn.Items[tstbPageIndex].Text.ToString().ToInt();
int size = bn.Items[tstbPageSize].Text.ToString().ToInt();
if (size == )
size = ;
if (size > Total)
{
//if (Total != 0)
// size = Total;
if (PageIndex * PageSize > Total)
PageIndex = ;
}
PageSize = size;
if (index > PageCount)
index = PageCount;
PageIndex = index;
}
//else
//{
// //bn.Items[tsbFirst].Enabled = false;
// //bn.Items[tsbPageUp].Enabled = false;
// //bn.Items[tsbLast].Enabled = false;
// //bn.Items[tsbPageDown].Enabled = false;
//}
#endregion
}
catch (Exception ex)
{
Fn.ShowWarning(ex.Message);
} #region show
if (PageIndex <= )
{
PageIndex = ;
bn.Items[tsbFirst].Enabled = false;
bn.Items[tsbPageUp].Enabled = false;
}
else
{
bn.Items[tsbFirst].Enabled = true;
bn.Items[tsbPageUp].Enabled = true;
}
if (PageIndex == PageCount)
{
bn.Items[tsbLast].Enabled = false;
bn.Items[tsbPageDown].Enabled = false;
}
else
{
bn.Items[tsbLast].Enabled = true;
bn.Items[tsbPageDown].Enabled = true;
}
if (Total == )
{
bn.Items[tsbFirst].Enabled = false;
bn.Items[tsbPageUp].Enabled = false;
bn.Items[tsbLast].Enabled = false;
bn.Items[tsbPageDown].Enabled = false;
}
bn.Items[tstbPageSize].Text = PageSize.ToString();
bn.Items[tstbPageIndex].Text = PageIndex.ToString();
bn.Items[tslPageCount].Text = "/{" + PageCount.ToString() + "}页"; #endregion
} /// <summary>
/// 获取当前页
/// </summary>
/// <param name="dt">数据源</param>
/// <returns></returns>
public DataTable GetDataTable(DataTable dt)
{
DataTable dtTemp = dt.Clone();
int dtCount = dt.Rows.Count;
if (dtCount == )
{
return dtTemp;
}
int start = (PageIndex - ) * PageSize;
int end = PageIndex * PageSize;
if (start > dtCount)
start = ;
if (end > dtCount)
end = dtCount;
for (int i = start; i < end; i++)
{
if (i>dt.Rows .Count )
{
continue;
}
DataRow row = dtTemp.NewRow();
row.ItemArray = dt.Rows[i].ItemArray;
dtTemp.Rows.Add(row);
}
return dtTemp;
}
}
winform分页管理的更多相关文章
- 在DevExpress程序中使用Winform分页控件直接录入数据并保存
一般情况下,我们都倾向于使用一个组织比较好的独立界面来录入或者展示相关的数据,这样处理比较规范,也方便显示比较复杂的数据.不过在一些情况下,我们也可能需要直接在GridView表格上直接录入或者修改数 ...
- WinForm酒店管理软件--框架
WinForm酒店管理软件--框架 搞软件开发4年多了,现在自认为还是菜鸟,从一开始走上工作岗位各种技术对我都很新奇没解决一个问题都觉得很伟大到后来开始对出路的迷茫,到现在我坚信学什么技术不重要,做什 ...
- winform 分页控件
http://www.cnblogs.com/liuyunsheng/p/4853387.html http://www.cnblogs.com/wuhuacong/archive/2011/07/0 ...
- x86 保护模式 十 分页管理机制
x86 保护模式 十 分页管理机制 8.386开始支持分页管理机制 段机制实现虚拟地址到线性地址的转换,分页机制实现线性地址到物理地址的转换.如果不启用分页,那么线性就是物理地址 一 分页管 ...
- 【操作系统之十】内存分页管理与swap
一.虚拟内存电脑里内存分内存条(这里我们叫物理内存)和硬盘,内存条保存程序运行时数据,硬盘持久保存数据.那么虚拟内存是什么? 程序运行会启动一个进程,进程里有程序段.全局数据.栈和堆,这些都会加载到内 ...
- [转帖]运维必读:Linux 的内存分页管理
运维必读:Linux 的内存分页管理 https://cloud.tencent.com/developer/article/1356431 内存是计算机的主存储器.内存为进程开辟出进程空间,让进程在 ...
- Linux的内存分页管理
作者:Vamei 出处:http://www.cnblogs.com/vamei 严禁转载 内存是计算机的主存储器.内存为进程开辟出进程空间,让进程在其中保存数据.我将从内存的物理特性出发,深入到内存 ...
- 开发框架模块视频系列(2)-Winform分页控件介绍
在软件开发过程中,为了节省开发时间,提高开发效率,统一用户处理界面,尽可能使用成熟.功能强大的分页控件,这款Winform环境下的分页控件,集成了数据分页.内容提示.数据打印.数据导出.表头中文转义等 ...
- Linux的内存分页管理【转】
内存是计算机的主存储器.内存为进程开辟出进程空间,让进程在其中保存数据.我将从内存的物理特性出发,深入到内存管理的细节,特别是了解虚拟内存和内存分页的概念. 内存 简单地说,内存就是一个数据货架.内存 ...
随机推荐
- hdu 2821 Pusher (dfs)
把这个写出来是不是就意味着把 http://www.hacker.org/push 这个游戏打爆了? ~啊哈哈哈 其实只要找到一个就可以退出了 所以效率也不算很低的 可以直接DFS呀呀呀呀 ...
- Netty4.x分析(转)
官网定义: netty是一个异步.事件驱动的网络应用框架,用于快速开发可维护的.高性能的服务端和客户端程序. 原理分析 Architecture Overview 网络模型:netty采用了React ...
- 约瑟夫圆环的C++实现
转载请注明出处:点我 昨天参加了企鹅的2015年实习生招聘的笔试,编程题第一道题就是约瑟夫圆环问题,要求用C++来实现. 约瑟夫圆环问题其实是一个很有名的问题:问题的描述为: 设有编号为1,2,……, ...
- android标题栏(titlebar)显示进度条
在后台线程中执行各种操作(网络连接.大数据存储)的时候,我们希望让客户能看到后台有操作在进行,那么既能有效的提示用户,又不占用当前操作空间,最好的方法就是在标题栏有个进度条. [代码] [Java]代 ...
- android程序逆向工程
随着智能手机的普及,功能越来越强大.程序也越来多和复杂化.研究一下android系统的逆向工程也是挺有意思的. 目前android逆向工程还处于初级阶段.表现在于: 1.没有完整的动态调试程序.目前由 ...
- 分享8款绚丽的HTML5/jQuery特效插件
有几天没有分享前端资源了,今天要向大家分享15款非常给力的HTML5/jQuery特效插件,废话少说,一起来看看. 1.CSS3图片重力感应特效 很酷的一款CSS3模拟重力感应特效,你可以拖动图片来甩 ...
- Flex4+Spring3+Hibernate3+BlazeDS整合笔记
普通Java Web工程流行使用ssh框架,而当前台使用Flex制作的时候,后台就不需要用Struts了,通过使用BlazeDS远程方法调用即可. 首先,新建Java Web工程,然后添加Flex项目 ...
- jquery 验证控件
最近应公司要求做了一个jquery的示例文件,包括:模态窗口怎么实现:jquery validate下的校验:怎么做图片特效:怎么实现异步操作:实现图片上传剪切效果等很多特效: 这里把jquery校验 ...
- spring jdbctemplate源码跟踪
闲着没事,看看源码也是一种乐趣! java操作数据库的基本步骤都是类似的: 1. 建立数据库连接 2. 创建Connection 3. 创建statement或者preparedStateement ...
- 关于解决Permission is only granted to system apps
一句话,clean一下这个Project!就OK了…… 不要被假象迷惑!