DataTable分页实例,
来源:互联网 发布:Js回车切换表单焦点 编辑:程序博客网 时间:2024/06/07 13:55
DateTable分页通用类:
public static class Page { /// <summary> /// DataTable分页 /// </summary> /// <param name="dt">DataTable</param> /// <param name="PageIndex">页索引,注意:从1开始</param> /// <param name="PageSize">每页大小</param> /// <returns>分好页的DataTable数据</returns> 第1页 每页10条 public static DataTable GetPagedTable(DataTable dt, int PageIndex, int PageSize) { if (PageIndex == 0) { return dt; } DataTable newdt = dt.Copy(); newdt.Clear(); int rowbegin = (PageIndex - 1) * PageSize; int rowend = PageIndex * PageSize; if (rowbegin >= dt.Rows.Count) { return newdt; } if (rowend > dt.Rows.Count) { rowend = dt.Rows.Count; } for (int i = rowbegin; i <= rowend - 1; i++) { DataRow newdr = newdt.NewRow(); DataRow dr = dt.Rows[i]; foreach (DataColumn column in dt.Columns) { newdr[column.ColumnName] = dr[column.ColumnName]; } newdt.Rows.Add(newdr); } return newdt; } /// <summary> /// 返回分页的页数 /// </summary> /// <param name="count">总条数</param> /// <param name="pageye">每页显示多少条</param> /// <returns>如果 结尾为0:则返回1</returns> public static int PageCount(int count, int pageye) { int page = 0; int sesepage = pageye; if (count % sesepage == 0) { page = count / sesepage; } else { page = (count / sesepage) + 1; } if (page == 0) { page += 1; } return page; } }具体的使用:
1. 创建分页需要的属性以及类:
DataTable dbtb = new DataTable(); int pageSize = 20; //每页显示行数 int nMax = 0; //总记录数 int pageCount = 0; //页数=总记录数/每页显示行数 int pageCurrent = 1; //当前页号
2.初始化加载>页面加载事件:
dbtb.Columns.Add("序号", typeof(int)); dbtb.Columns.Add("操作", typeof(string)); dbtb.Columns.Add("用户", typeof(string)); dbtb.Columns.Add("昵称", typeof(string)); dbtb.Columns.Add("操作时间", typeof(string)); adduserFromDB(""); dgv_Log.Rows.Clear(); LodDate(dbtb, 1, pageSize); this.txtCurrentPage.Text = "1";
3:调用的方法:
public void adduserFromDB(string sqlParam) { dbtb.Rows.Clear(); dgv_Log.Rows.Clear(); System.Collections.Generic.List<Entity.LogItem> loglist = Core.User.GetLogList(sqlParam); foreach (Entity.LogItem log in loglist) { int index = this.dgv_Log.Rows.Add(); this.dgv_Log.Rows[index].Cells["ID"].Value = log.id; this.dgv_Log.Rows[index].Cells["data"].Value = log.Data; this.dgv_Log.Rows[index].Cells["UserCode"].Value = log.UserCode; this.dgv_Log.Rows[index].Cells["UserName"].Value = log.UserName; this.dgv_Log.Rows[index].Cells["Datetime"].Value = log.Datetime; DataRow newRow = dbtb.NewRow(); newRow["序号"] = log.id; newRow["操作"] = log.Data; newRow["用户"] = log.UserCode; newRow["昵称"] = log.UserName; newRow["操作时间"] = log.Datetime; dbtb.Rows.Add(newRow); } LodDate(dbtb, 1, pageSize); } // 加载 public void LodDate(DataTable dbt, int PageIndex, int PageSize) { //pageSize = 10; //每页显示行数 nMax = dbt.Rows.Count; //总记录数 pageCount = Core.Page.PageCount(nMax,pageSize); //页数=总记录数/每页显示行数 pageCurrent = PageIndex; //当前页号 //nCurrent = 0; //当前记录行 DataTable dt = Core.Page.GetPagedTable(dbt, PageIndex, PageSize); this.labelX3.Text = dbt.Rows.Count.ToString(); this.labelX4.Text = PageSize.ToString(); this.lblPageCount.Text = (Core.Page.PageCount(dbt.Rows.Count, PageSize)).ToString(); this.txtCurrentPage.Text = PageIndex.ToString(); //this.lblPageCount.Text = (Convert.ToInt32(dbt.Rows.Count) / PageSize).ToString(); this.dgv_Log.Rows.Clear(); //for (int i = 0; i < dt.Columns.Count; i++) //{ for (int j = 0; j < dt.Rows.Count; j++) { //temp = dt.Rows[j][i].ToString();//具体情况具体设置 int index = this.dgv_Log.Rows.Add(); this.dgv_Log.Rows[index].Cells["ID"].Value = dt.Rows[j][0].ToString(); this.dgv_Log.Rows[index].Cells["data"].Value = dt.Rows[j][1].ToString(); this.dgv_Log.Rows[index].Cells["UserCode"].Value = dt.Rows[j][2].ToString(); this.dgv_Log.Rows[index].Cells["UserName"].Value = dt.Rows[j][3].ToString(); this.dgv_Log.Rows[index].Cells["Datetime"].Value = dt.Rows[j][4].ToString(); } //} }
4:第一页
dgv_Log.Rows.Clear(); LodDate(dbtb, 1, pageSize); this.txtCurrentPage.Text = "1";
5:最后一页
dgv_Log.Rows.Clear(); LodDate(dbtb, pageCount, pageSize); this.txtCurrentPage.Text = pageCount.ToString();
6:上一页
if (pageCurrent >1) { pageCurrent--; LodDate(dbtb, pageCurrent, pageSize); this.txtCurrentPage.Text = pageCurrent.ToString(); }else { MessageBox.Show("已经是第一页,请点击“下一页”查看!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); return; }
7:下一页
if (pageCount > pageCurrent) { pageCurrent++; LodDate(dbtb, pageCurrent, pageSize); this.txtCurrentPage.Text = pageCurrent.ToString(); } else { MessageBox.Show("已经是最后一页,请点击“上一页”查看!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); }
8:删除的时候需要从Datatable删除查找到的行( 删除的时候需要更新状态)
//从DataTable中去掉指定的行 DataRow[] foundRow = dbtb.Select("序号=" + id); foreach (DataRow row in foundRow) { dbtb.Rows.Remove(row); }
//更新底部状态
this.labelX3.Text = dbtb.Rows.Count.ToString(); this.labelX4.Text = pageSize.ToString(); this.lblPageCount.Text = (Core.Page.PageCount(dbtb.Rows.Count, pageSize)).ToString(); //this.txtCurrentPage.Text = PageIndex.ToString();
- DataTable分页实例,
- datatable 分页实例
- DataTable 分页
- DataTable分页
- DataTable分页
- datatable 分页
- DataTable分页
- DataTable 分页
- dataTable分页
- 对DataTable进行分页
- 对DataTable进行分页
- 对DataTable进行分页
- 分页 jsf组件dataTable
- JSF h:dataTable 分页
- DataTable 分页汇总
- DataTable 分页显示
- datatable分页(转载)
- 对DataTable进行分页
- struts2 如何 上传文件
- java 中,new() 与newinstance()的区别~
- ubuntu安装ssh服务
- delphi 结束外部程序
- 秒杀多线程第五篇 经典线程同步 关键段CS
- DataTable分页实例,
- 第二章 IoC Bean的初始化与延迟加载
- AS3解析JSON
- Mtk6573使用虚拟机下载软件
- sql 语句
- socket连接服务端和客户端的新demo,扩展性更好,更适合用于项目中。
- Linux RAR 安装和使用
- 屏幕亮度设置
- MTKAndroid添加驱动模块