`

DataGridView分页及分页后页面操作(上页、下页、页面跳转)类

    博客分类:
  • C#
阅读更多

class Pagination
{
private static int pageSize = 0; //每页显示行数
private static int nMax = 0; //总记录数
private static int pageCount = 0; //页数=总记录数/每页显示行数
private static int pageCurrent = 0; //当前页号
private static int nCurrent = 0; //当前记录行

private static DataTable dtInfo = new DataTable();
private static DataSet objSet;
private static System.Windows.Forms.DataGridView dgvInfo;
private static ImageList imageList1;
private static ToolStripLabel lblPageCount;
private static ToolStripButton lbl4; //上一页
private static ToolStripButton lbl6; //下一页
private static ToolStripTextBox txtCurrentPage;
private static BindingNavigator bdnInfo;
private static BindingSource bdsInfo;
private static ToolStripStatusLabel StripStatusLabel;


public static System.Windows.Forms.DataGridView _dgvInfo
{
get { return dgvInfo; }
set { dgvInfo = value;}
}
public static ImageList _imageList1
{
get { return imageList1; }
set { imageList1 = value;}
}
public static ToolStripLabel _lblPageCount
{
get { return lblPageCount; }
set { lblPageCount = value;}
}
public static ToolStripButton _lbl4
{
get { return lbl4; }
set { lbl4 = value;}
}
public static ToolStripButton _lbl6
{
get { return lbl6; }
set { lbl6 = value;}
}
public static ToolStripTextBox _txtCurrentPage
{
get { return txtCurrentPage; }
set { txtCurrentPage = value;}
}
public static BindingNavigator _bdnInfo
{
get { return bdnInfo; }
set { bdnInfo = value;}
}
public static BindingSource _bdsInfo
{
get { return bdsInfo; }
set { bdsInfo = value;}
}
public static ToolStripStatusLabel _StripStatusLabel
{
get { return StripStatusLabel; }
set { StripStatusLabel = value;}
}

//获取数据源
public static void GetSet(DataSet set)
{
objSet = set;
if (objSet!=null && objSet.Tables.Count != 0)
{
if (objSet.Tables[0].Rows.Count != 0)
{
bdnInfo.Enabled = true;
}
else
{
bdnInfo.Enabled = false;
}
int numbers = objSet.Tables[0].Rows.Count;
StripStatusLabel.Visible = true;
StripStatusLabel.Text = "资产数量:" + numbers + "件";
if (numbers > 0)
{
DataTable table = new DataTable();
DataColumn column = new DataColumn();
column.ColumnName = "编号";
column.AutoIncrement = true;
column.AutoIncrementSeed = 1;
column.AutoIncrementStep = 1;
table.Columns.Add(column);
table.Merge(objSet.Tables[0]);

dtInfo = table;
InitDataSet();
}
else
{
DataTable table = new DataTable();
DataColumn column = new DataColumn();
column.ColumnName = "编号";
column.AutoIncrement = true;
column.AutoIncrementSeed = 1;
column.AutoIncrementStep = 1;
table.Columns.Add(column);
table.Merge(objSet.Tables[0]);
dgvInfo.DataSource = table.DefaultView;
dgvInfo.Columns[0].Width = 40;

}
}
else
{
return;
}
}

public static void InitDataSet()
{
pageSize =20; //设置页面行数
nMax = dtInfo.Rows.Count;

pageCount = (nMax / pageSize); //计算出总页数

if ((nMax % pageSize) > 0) pageCount++;

pageCurrent = 1; //当前页数重1开始
nCurrent = 0; //当前记录数重0开始
lbl4.Enabled = false;
if (dtInfo.Rows.Count<=20)
{
lbl6.Enabled = false;
}
else
{
lbl6.Enabled = true;
}
LoadData();
}

public static void LoadData()
{

int nStartPos = 0; //当前页面开始记录行
int nEndPos = 0; //当前页面结束记录行

DataTable dtTemp = dtInfo.Clone(); //克隆DataTable结构框架

if (pageCurrent == pageCount)
nEndPos = nMax;
else
nEndPos = pageSize * pageCurrent;

nStartPos = nCurrent;

lblPageCount.Text = "/ " + pageCount.ToString();
txtCurrentPage.Text = Convert.ToString(pageCurrent);

//重元数据源复制记录行
for (int i = nStartPos; i < nEndPos; i++)
{
dtTemp.ImportRow(dtInfo.Rows[i]);
nCurrent++;

}

bdsInfo.DataSource = dtTemp;
bdnInfo.BindingSource = bdsInfo;
dgvInfo.DataSource = bdsInfo;
dgvInfo.Columns[0].Width = 40;

}
//跳转到指定业
public static void bdnGOClicke(int page)
{
int page1 = Convert.ToInt32(txtCurrentPage.Text);//当前页
if (page <= 0 || page > pageCount)
{
MessageBox.Show("您输入的页码错误,请重新输入!", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
if (page > page1 && page <= pageCount)
{
int number = page - page1;
if (pageCurrent < pageCount)
{
pageCurrent = pageCurrent + number;
if (pageCurrent == pageCount)
{
lbl6.Enabled = false;
lbl4.Enabled = true;
nCurrent = pageSize * (pageCurrent - 1);

}
else
{
lbl6.Enabled = true;
lbl4.Enabled = true;
nCurrent = pageSize * (pageCurrent - 1);
}
LoadData();

}
}
if (0 < page && page < page1)
{
int number = page1 - page;
if (pageCurrent > 0)
{
pageCurrent = pageCurrent - number;

if (pageCurrent == 1)
{
lbl4.Enabled = false;
lbl6.Enabled = true;
nCurrent = pageSize * (pageCurrent - 1);

}
else
{
lbl4.Enabled = true;
lbl6.Enabled = true;
nCurrent = pageSize * (pageCurrent - 1);
}

LoadData();

}
}

}
//上下业跳转
public static void bdnInfoItemClicke(string item)
{
if (item.Equals("上一页"))
{
if (pageCurrent > 0)
{
pageCurrent--;

if (pageCurrent == 1)
{
lbl4.Enabled = false;
lbl6.Enabled = true;
nCurrent = pageSize * (pageCurrent - 1);

}
else
{
lbl4.Enabled = true;
lbl6.Enabled = true;
nCurrent = pageSize * (pageCurrent - 1);
}

LoadData();

}

}
if (item.Equals("下一页"))
{
if (pageCurrent < pageCount)
{
pageCurrent++;
if (pageCurrent == pageCount)
{
lbl6.Enabled = false;
lbl4.Enabled = true;
nCurrent = pageSize * (pageCurrent - 1);

}
else
{
lbl6.Enabled = true;
lbl4.Enabled = true;
nCurrent = pageSize * (pageCurrent - 1);
}
LoadData();

}

}

}
}

分享到:
评论

相关推荐

    C#DataGridView分页显示功能实现

    6. 事件处理:为了使用户能够直接跳转到指定页,还可以添加一个文本框让用户输入页码,然后在确认时触发页面跳转。这需要监听文本框的`TextChanged`事件,验证输入的页码是否有效,并进行页面切换。 7. 键盘导航:...

    (VB.NET)WinForm自定义DataGridView分页组合控件

    总的来说,"(VB.NET)WinForm自定义DataGridView分页组合控件"是一个实用的工具,可以帮助开发者在Windows Forms应用中轻松实现大数据量的分页显示。通过自定义控件的方式,不仅可以满足特定的需求,还可以提升应用...

    winform下datagridview分页控件

    4. **事件处理**:监听`BindingSource.CurrentChanged`事件,当用户在页面间切换时,这个事件会被触发,从而可以更新UI上的分页信息。 5. **性能优化**:在数据量非常大的情况下,可以使用虚拟化技术。`...

    C# winform分页控件,用于dataGridView分页浏览,分页,跳转,自定义页数,动态设置页大小

    C# winform分页控件,用于dataGridView分页浏览 `PageControl`是一个为Windows Forms应用程序提供的自定义用户控件,用于实现数据分页显示功能。该控件允许用户通过简单的界面导航不同的数据页,包括首页、上一页、...

    c#dataGridView分页显示

    在C#编程中,`dataGridView`控件是一个非常常见的组件,用于展示表格数据。当我们处理大量数据时,分页显示就显得尤...在实际项目中,还可以根据需求进一步定制分页样式和功能,如跳转到指定页、每页显示条目数设置等。

    c# datagridview分页功能实现 源码

    为解决这一问题,我们可以实现`DataGridView`的分页功能。本教程将通过源码分析,讲解如何利用`DataGridView`、`BindingNavigator`和`BindingSource`控件实现分页显示。 首先,我们需要了解`DataGridView`、`...

    WinForm下编写分页控件,实现DataGridView的分页效果

    3. **导航按钮**:包括“上一页”、“下一页”、“首页”和“末页”按钮,以及可能的数字页码跳转。 4. **数据刷新**:更新数据显示,根据当前页码加载对应的数据。 实现这个功能,我们可以创建一个新的用户控件...

    Datagridview分页控件

    C#开发的Datagridview分页控件源码,采用的真分页非存储过程方式。支持每页显示条数,页跳转,当前页和全部页导出Excel功能。 使用方法。将本控件源码导入自己的新建项目中,整个项目编译一次后,工具箱会自动生成一...

    C#DataGridView分页程序

    //用于操作分页关于页码的总数 因为分页时在查询的时候 第一页时 currentPage=0才能取得正确的数据 int recordsCount;//记录总页数和信息总条数 int CurrentPage;//当前页 int jumpPage;//跳转页码 #endregion

    datagridview分页

    `DataGridView`默认并不支持内置的分页功能,但可以通过编程方式来实现这一功能。下面将详细介绍如何在C#中实现`DataGridView`的分页。 首先,我们需要理解分页的基本概念。分页是将大量数据分成多个较小的部分(页...

    在DataGridView中实现分页效果

    根据提供的代码片段,我们可以看到一个用于处理DataGridView分页的类`ClsDataGridViewPage`。下面将详细介绍该类的主要功能及其实现过程。 ### 类结构分析 #### 属性定义 - `private int _RowsPerPage;`:每页显示...

    vb.net DataGridView分页.rar_DataGridView分页_datagridview vb_datagri

    通过以上步骤,你可以成功地在VB.NET中实现一个功能完善的DataGridView分页功能。记得在编写代码时遵循良好的编程实践,确保代码的可读性和可维护性。在调试过程中,确保每个分页操作都正确地显示了预期的数据,并且...

    dataGridView分页控件

    dataGridView分页控件是.NET开发中常见的一种自定义控件,主要用于解决在数据量较大时,dataGridView无法一次性加载所有数据的问题。在C#环境下,为了提高用户体验和性能,开发者通常会自定义分页功能,使得用户能逐...

    datagridview分页 C#源代码

    5. 用户交互:创建导航按钮(如“上一页”、“下一页”)供用户切换页面。这些按钮的点击事件需要更新当前页数,并重新执行数据获取和更新步骤。 6. 页面计数:根据总数据量计算总的页数,以便确定导航按钮的可用...

    DataGridView使用说明(带数据库分页显示)

    对于交互式的分页,你需要监听`DataGridView`的事件,如`CellClick`或`CellContentClick`,以处理用户的选择和其他操作。 9. **样式和格式** 可以通过设置`DefaultCellStyle`,`HeaderStyle`等属性来改变单元格、...

    两个winform datagridview 分页的实例,外国人写的,简单易懂

    综上所述,这两个WinForm DatagridView分页实例提供了一种理解和实现分页的方法,适合初学者和有经验的开发者参考。通过学习这些实例,开发者可以更好地管理大型数据集,提升WinForm应用的性能和用户体验。

    winform漂亮的第三方控件按钮datagridview分页等等

    "winform漂亮的第三方控件按钮datagridview分页等等"这个主题中,我们主要探讨的是如何利用第三方控件增强Windows窗体应用程序的功能和视觉效果。 首先,让我们聚焦在“DataGridView”控件上。系统自带的...

    C# dataGridView制作分页程序加源代码

    同时,可以考虑添加“上一页”、“下一页”按钮,以及“跳转到指定页”功能。 源代码中可能包含以下几个关键部分: - `PageChange`事件处理程序:这里会根据用户的分页选择更新数据。 - `LoadData`方法:负责从...

    自己写的一个分页控件,可以实现dataGridView的分页显示

    4. **与dataGridView集成**:将分页后的数据绑定到dataGridView。这通常通过`dataGridView.DataSource`属性来实现。你可能还需要设置`dataGridView.AutoGenerateColumns`属性,以便自动显示数据列。 5. **性能优化*...

    分页控件和List绑定排序

    本示例提供了一个自定义的分页控件,它具备首页、上一页、下一页、尾页以及跳转功能,并允许用户自定义每页显示的记录数。下面我们将深入探讨这些知识点。 **分页控件** 分页控件是一种UI组件,用于将大量数据分割...

Global site tag (gtag.js) - Google Analytics