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

    /// <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分页管理的更多相关文章

  1. 在DevExpress程序中使用Winform分页控件直接录入数据并保存

    一般情况下,我们都倾向于使用一个组织比较好的独立界面来录入或者展示相关的数据,这样处理比较规范,也方便显示比较复杂的数据.不过在一些情况下,我们也可能需要直接在GridView表格上直接录入或者修改数 ...

  2. WinForm酒店管理软件--框架

    WinForm酒店管理软件--框架 搞软件开发4年多了,现在自认为还是菜鸟,从一开始走上工作岗位各种技术对我都很新奇没解决一个问题都觉得很伟大到后来开始对出路的迷茫,到现在我坚信学什么技术不重要,做什 ...

  3. winform 分页控件

    http://www.cnblogs.com/liuyunsheng/p/4853387.html http://www.cnblogs.com/wuhuacong/archive/2011/07/0 ...

  4. x86 保护模式 十 分页管理机制

    x86   保护模式  十  分页管理机制 8.386开始支持分页管理机制 段机制实现虚拟地址到线性地址的转换,分页机制实现线性地址到物理地址的转换.如果不启用分页,那么线性就是物理地址 一  分页管 ...

  5. 【操作系统之十】内存分页管理与swap

    一.虚拟内存电脑里内存分内存条(这里我们叫物理内存)和硬盘,内存条保存程序运行时数据,硬盘持久保存数据.那么虚拟内存是什么? 程序运行会启动一个进程,进程里有程序段.全局数据.栈和堆,这些都会加载到内 ...

  6. [转帖]运维必读:Linux 的内存分页管理

    运维必读:Linux 的内存分页管理 https://cloud.tencent.com/developer/article/1356431 内存是计算机的主存储器.内存为进程开辟出进程空间,让进程在 ...

  7. Linux的内存分页管理

    作者:Vamei 出处:http://www.cnblogs.com/vamei 严禁转载 内存是计算机的主存储器.内存为进程开辟出进程空间,让进程在其中保存数据.我将从内存的物理特性出发,深入到内存 ...

  8. 开发框架模块视频系列(2)-Winform分页控件介绍

    在软件开发过程中,为了节省开发时间,提高开发效率,统一用户处理界面,尽可能使用成熟.功能强大的分页控件,这款Winform环境下的分页控件,集成了数据分页.内容提示.数据打印.数据导出.表头中文转义等 ...

  9. Linux的内存分页管理【转】

    内存是计算机的主存储器.内存为进程开辟出进程空间,让进程在其中保存数据.我将从内存的物理特性出发,深入到内存管理的细节,特别是了解虚拟内存和内存分页的概念. 内存 简单地说,内存就是一个数据货架.内存 ...

随机推荐

  1. DB Cache

    1 DB Cache 是以bock为单位组织的缓冲区,不同大小的BLOCK对应不同的缓冲区参数 2 DB Cache的命中率越高,访问性能就越好 3 Cache中的数据块通过散列算法实现 4 每个链上 ...

  2. CSS去除链接虚线(兼容IE6、IE7)

    在css里加入以下代码: a{    hide-focus: expression( this.hideFocus=true );    outline: none;}

  3. Android Studio开发JNIproject

    使用Android Sutdio创建一个新的project后,接下来记录创建NDKproject的基本步骤. 本文将达到: 1. 创建NDKproject 2. 在JNI中输出Log语句 3. 指定编 ...

  4. Navicat 导入数据报错 --- 1153 - Got a packet bigger than 'max_allowed_packet' bytes

    在用Navicat导入SQL文件时报错:MySql 错误 Err [Imp] 1153 - Got a packet bigger than 'max_allowed_packet' bytes 查了 ...

  5. jQuery Mobile与QUI框架的异曲同工之处

    最近一直在研究jQuery Mobile框架,这是jQuery的官方移动版UI框架,专门用来开发手机与平板电脑方面的应用.结果越来越觉得它和我的QUI框架的开发思路非常相似,很多地方都有异曲同工之妙. ...

  6. Codeforces Round #342 (Div. 2) B. War of the Corporations 贪心

    B. War of the Corporations 题目连接: http://www.codeforces.com/contest/625/problem/B Description A long ...

  7. Winform 导出成Excel打印代码

    WinForm中 直接调用Excel的打印预览功能,但不显示Excel文件 using Microsoft.Office.Interop.Excel; //引用 public void PrintPr ...

  8. 如何在C#中使用全局鼠标、键盘Hook

    今天,有个同事问我,怎样在C#中使用全局钩子?以前写的全局钩子都是用unmanaged C或C++写个DLL来实现,可大家都知道,C#是基于.Net Framework的,是managed,怎么实现全 ...

  9. 使用ASP.NET操作IIS7中使用应用程序

    使用ASP.NET操作IIS7中使用应用程序   在最新发布的启明星Portal里,增加了安装程序,下面说一下.NET对IIS7操作.IIS7的操作和IIS5/6有很大的不同,在IIS7里增加了 Mi ...

  10. jquery validate 小demo

    方便学习: 直接上代码: ceshi.html: <!DOCTYPE html> <html> <head> <meta http-equiv="C ...