C# 如何用 dateGridView 实现分页?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C# 如何用 dateGridView 实现分页?相关的知识,希望对你有一定的参考价值。

我现在 dateGridView是这么填充的:

public partial class STORAGE_LIST_COUNT : FormBase

DataTable dt = new DataTable();
string sql = string.Format("select GOODS_CODE,GOODS_NAME,GOODS_TUHAO,SUM(STORAGE_LIST_QUANTITY) FROM V_ST_STORAGE_LIST group by GOODS_CODE,GOODS_NAME,GOODS_TUHAO");

public STORAGE_LIST_COUNT()

InitializeComponent();

private void STORAGE_LIST_COUNT_Load(object sender, EventArgs e)

this.DataBind();


private void DataBind()

dt = this._i_base.GetList(sql);
DataTable ndt = new DataTable();
DataColumn dc = new DataColumn();// 自增序号
dc.ColumnName = "序号 ";
dc.AutoIncrement = true;
dc.AutoIncrementSeed = 1;
dc.AutoIncrementStep = 1;
ndt.Columns.Add(dc);
ndt.Merge(dt);
this.dataGridView1.DataSource = ndt;


请我如何把这个 ndt(datetable) 分页后赋给dateGridView,控件并提供前一页,后一页,首页。末页的功能

谢谢。
dateGridView 中 没有PageIndexChanging事件。

DataBind()方法修改如下:
/// <summary>
/// 绑定数据
/// </summary>
/// <param name="pageIndex">显示页面</param>
private void DataBind(int pageIndex)

if(pageIndex<0)

pageIndex = 1;

dt = this._i_base.GetList(sql);
DataTable ndt = new DataTable();
DataColumn dc = new DataColumn();// 自增序号
dc.ColumnName = "序号";
dc.AutoIncrement = true;
dc.AutoIncrementSeed = 1;
dc.AutoIncrementStep = 1;
ndt.Columns.Add(dc);
ndt.Merge(dt);

int rowsEveryPage = 10;//每页显示数据条数

int begin = (pageIndex-1) * 10 + 1;//开始数据行索引
int end = (pageIndex - 1) * 10 + rowsEveryPage ;//结束数据行索引

DataRow[] drs = ndt.Select("序号>" + begin + " and 序号< " + end);

DataTable bindTable = ndt.Clone();
for (int i = 0; i < drs.Length; i++)

DataRow dr = bindTable.NewRow();
dr.ItemArray = drs[i].ItemArray;
bindTable.Rows.Add(dr);


this.dataGridView1.DataSource = bindTable;
参考技术A 在GridView1的PageIndexChanging事件中写一下代码。自带的。

SqlConnection conn = new SqlConnection(“连接数据库”);
SqlDataAdapter ad = new SqlDataAdapter("select GOODS_CODE,GOODS_NAME,GOODS_TUHAO,SUM(STORAGE_LIST_QUANTITY) FROM V_ST_STORAGE_LIST group by GOODS_CODE,GOODS_NAME,GOODS_TUHAO", conn);
DataSet set = new DataSet();
ad.Fill(set);
GridView1.DataSource = set.Tables[0];
GridView1.PageIndex=e.NewPageIndex;
GridView1.DataBind();
参考技术B 不用代码,直接在控件的选项中设置。 参考技术C 什么东西

如何用C#设计上位机(小白篇)

上位机,简单地说就是电脑上的一个小软件,用来实现远程控制。远程控制是自动化控制的第一步。
一般来说,一个上位机的开发包括几个模块:
  1. 界面及功能设计

  2. 设备指令编写

  3. 通信模块设计

一. 界面功能设计:

C#是一款方便设计界面的语言,微软确实牛批!

以下是visual studio开发窗体的界面,界面设计中有几个常用的工具分别为:

  1. buttun(按钮)

  2. textBox(文本框)

  3. checkBox(勾选开关)

  4. comboBox(复选框)

  5. label(标签)

  6. Timer(时钟)

以上常用工具均可在窗体编辑界面中编辑默认属性,基本属性如命名,颜色等。

常用用法介绍如下:

  1. buttun:一般只需编辑Text属性(如下图为“连接”),命名后直接双击按钮,跳到程序编辑界面,编辑该按钮想要实现的功能。例如:下图为“连接”按钮的程序代码,实现连接和断开的功能。


    如何用C#设计上位机(小白篇)


    如何用C#设计上位机(小白篇)

  2. textBox:一般有两种用途:

    (1)作为用户输入的参数,可双击该文本框,跳到程序编辑界面,编辑该文本框的文本变化时所要实现的功能。例如:下图为“标签”文本框的程序代码,当“标签”文本框的文本被改变时,将该文本框的文本发送给示波器。

    如何用C#设计上位机(小白篇)

    如何用C#设计上位机(小白篇)

    (2)作为输出显示的参数,程序控制该文本框的内容,显示给用户看。例如下图“测量数据”文本框,每隔1S读取示波器的测量值,显示出来


    如何用C#设计上位机(小白篇)

  3. checkBox:一般用于开关。例如下图,开关某个通道,其属性为checkBox.checked,开为true,关为false。双击该开关,编辑开关状态变化时,实现发送开关指令给示波器。




    如何用C#设计上位机(小白篇)


    如何用C#设计上位机(小白篇)

  4. comboBox:一般用于多个档位选择工具,在属性中需要编辑“集合”,如下图,测量类型的选择。双击该复选框,编辑选择项变化时,实现发送测量类型指令给示波器。

如何用C#设计上位机(小白篇)

如何用C#设计上位机(小白篇)

如何用C#设计上位机(小白篇)

5.  Label:一般用于显示一些提示文本,所以不需要做编程。

如何用C#设计上位机(小白篇)

6.Timer:时钟工具可以实现每隔一段时间自动执行某些操作,需要设计Interval属性(时间间隔),以及Enable属性(打开)。例如:实现每秒读取示波器测量值并显示的功能。

如何用C#设计上位机(小白篇)

如何用C#设计上位机(小白篇)


二. 设备指令编写

这个部分主要参考仪器的指令集进行编写各种控制命令,相对来说比较简单。如下图为示波器的通道打开和关闭指令:

如何用C#设计上位机(小白篇)


三. 通信模块设计

本例中选择VISA软件协议中的USB接口通信,VISA是NI公司推出的仪器通信软件协议,本例中引用了VISA的库,在发送和接收命令过程中将变得十分简单,如下图分别为发送和接收指令:(NI也牛批!)

如何用C#设计上位机(小白篇)


如何用C#设计上位机(小白篇)


如何用C#设计上位机(小白篇)


最后,介绍一点相对来说比较高级的应用——快捷键。当窗体处于最小化时,如果需要使用快捷键,需要引用Windows的热键注册功能,具体实现如下代码:

如何用C#设计上位机(小白篇)


如何用C#设计上位机(小白篇)



以上是关于C# 如何用 dateGridView 实现分页?的主要内容,如果未能解决你的问题,请参考以下文章

请问如何用jquery 实现html页面的分页查询

C#中dategridview数据源能否与Dictionary绑定

如何用sql语句 实现分页查询

如何用 Hibernate 实现分页查询

C#如何修改dategridview里头数据

如何用mybatis进行分页?