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的内存分页管理【转】
内存是计算机的主存储器.内存为进程开辟出进程空间,让进程在其中保存数据.我将从内存的物理特性出发,深入到内存管理的细节,特别是了解虚拟内存和内存分页的概念. 内存 简单地说,内存就是一个数据货架.内存 ...
随机推荐
- DeleteDC() 与 ReleaseDC() 的区别 [转]
DeleteDC 该函数删除指定的设备上下文环境(DC). 原型: BOOL DeleteDC(HDC hdc): 参数: hdc:设备上下文环境的句柄. 返回值: 成功,返回非零值:失败,返回零.调 ...
- vs2008 release下调试状态设置[转]
这是一个老生常谈的话题,但还是有时候会漏洞一些设置.总结一些,总共需要三个地方设置, 分别是1)c\c++-> General->Debug Information Format. 2) ...
- NodeJs使用Mysql模块实现事务处理
依赖模块: 1. mysql:https://github.com/felixge/node-mysql npm install mysql --save 2. async:https://githu ...
- .net MVC 碰到的问题
1:问:回车会默认会触发页面从左边至右,从上到下索引位置第一的按钮事件.如何取消? 答:在不需要触发按钮事件的按钮中加一个属性:UseSubmitBehavior="false" ...
- Visual C++内存泄露检测—VLD工具使用说明[转]
Visual C++内存泄露检测—VLD工具使用说明 一. VLD工具概述 Visual Leak Detector(VLD)是一款用于Visual C++的免费的内存泄露检测工具.他的 ...
- 【剑指offer】递归循环两种方式反转链表
转载请注明出处:http://blog.csdn.net/ns_code/article/details/25737023 本文分别用非递归和递归两种方式实现了链表的反转,在九度OJ上AC. 题目描写 ...
- oracle 迁移到 mysql(结构和数据)
1下载MySQL Migration Toolkit 2安装:jdk-6u38-ea-bin-b04-windows-amd64-31_oct_2012.exe 3下载ojdbc14.jar 具体地址 ...
- css常用知识
1.基本语法规范p {color:#ff0000;background:#ffffff}a.其中"p"称为"选择器"(selectors),指明我们要给&quo ...
- javascript exec方法
题目 取出 "[大哭][尴尬][发怒][发怒][调皮][调皮][呲牙]" 串中[]里面的东西 思路 正则匹配,/\[(.+?)\]/ig; exec方法循环 exec() 方法的功 ...
- Mingw:在Linux系统下编译Windows的程序
Ubuntu下可以直接安装: sudo apt-get install mingw32 mingw32-binutils mingw32-runtime 安装后编译程序可以: i586-mingw32 ...