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

    /// <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. 转载:页面加载swf插件:swfobject

    转自:http://www.cnblogs.com/analyzer/articles/1299592.html 我一直都在用SWFObject 插入flash,好处多多,代码简洁,不会出现微软的“单 ...

  2. 一些关于Block, ARC, GCD的总结

    基础解释不做.基础的东西链接如下: 1. Block:https://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/Bl ...

  3. intval()和(int)转换使用与区别

    <?php echo "<br/>数值强制转换:"; $string="2a"; $string1=intval($string); echo ...

  4. MySQL中进行树状所有子节点的查询

    在Oracle 中我们知道有一个 Hierarchical Queries 通过CONNECT BY 我们可以方便的查了所有当前节点下的所有子节点.但很遗憾,在MySQL的目前版本中还没有对应的功能. ...

  5. JQUERY插件JqueryAjaxFileUplaoder----更简单的异步文件上传

    异步上传相信大家都做过类似的功能,JqueryAjaxFileUploader为我们提供了更简单的实现和使用方式.不过既然是JQUERY的插件那么它所依赖的环境大家都懂得.JqueryAjaxFile ...

  6. scu 4436: Easy Math 水题

    4436: Easy Math Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.scu.edu.cn/soj/problem.actio ...

  7. HTML 转义符

    特殊字符 字符 十进制 转义字符 “ " " & & & < < < > > > 不断开空格(non-breaking ...

  8. 用ASP实现简单的繁简转换

    用ASP实现简单的繁简转换 国际化似乎是一个很流行的口号了,一个站点没有英文版至少也要弄个繁体版,毕竟都是汉字,翻译起来不会那么麻烦:P 一般的繁简转换是使用字典,通过GB的内码算出BIG5字符在字典 ...

  9. 【JavaScript】新浪微博ajax请求后改变地址栏url,但页面不跳转的方案解析

    新浪微博当你弹出一个视频的时候再点下一页时,原视频还在,而且地址栏的url的页数变了.对于这种网上讨论最多的方案有以下几种: 一.通过锚点Hash实现在这方面其实国内很早就有做了,比如淘宝画报,通过的 ...

  10. Swift - 本地消息的推送通知(附样例)

    使用UILocalNotification可以很方便的实现消息的推送功能.我们可以设置这个消息的推送时间,推送内容等. 当推送时间一到,不管用户在桌面还是其他应用中,屏幕上方会都显示出推送消息. 1, ...