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

    /// <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. SAE J2534 Pass-Thru API

    Connects to the OBDII J1962 DLC and supports the following protocols. 1 CAN2 Single Wire2 J1850PWM+ ...

  2. 新建VM_Script

    在Hyper-V群集中,不需要设置VM的自启动,当宿主机意外关机重新启动后,上面的VM会自动转移到另一台主机:如果另一台主机处于关机状态,则宿主机重新启动后,其VM也会自启动(如果其VM在宿主机关机前 ...

  3. Jquery 方式获取 iframe Dom元素

    Jquery 方式获取 iframe Dom元素 測试页面代码: <html>  <head>   <title>jquery方式,訪问iframe页面dom元素& ...

  4. codechef Arranging Cup-cakes题解

    Arranging Cup-cakes Our Chef is catering for a big corporate office party and is busy preparing diff ...

  5. Codeforces Round #290 (Div. 2) D. Fox And Jumping dp

    D. Fox And Jumping 题目连接: http://codeforces.com/contest/510/problem/D Description Fox Ciel is playing ...

  6. Codeforces Beta Round #75 (Div. 1 Only) B. Queue 线段树+二分

    B. Queue Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 codeforces.com/problemset/problem/91/B Descrip ...

  7. 创建C#串口通信程序详解

    在.NET平台下创建C#串口通信程序,.NET 2.0提供了串口通信的功能,其命名空间是System.IO.Ports.这个新的框架不但可以访问计算机上的串口,还可以和串口设备进行通信.我们将使用标准 ...

  8. GLSL实现Image Filter 【转】

    http://blog.csdn.net/a3070173/archive/2008/11/27/3390477.aspx 图像过滤无论是在作图工具还是特效的实现上都时有运用,这里发一些通常会使用到的 ...

  9. Cocos2d-x 3.0 动作

    http://blog.csdn.net/lnb333666/article/details/16858635 //运行一个action动作对象 runAction("action对象&qu ...

  10. android设置动态壁纸 (Wallpaper) 介绍

    当进入改壁纸的设置页面 但是还没有设置时 09-21 07:55:05.575: INFO/System.out(1337): service onCreate09-21 07:55:05.614: ...