DataGridView 分页显示函数
1.获取当前页的子数据表函数
public static DataTable GetPagedTable(DataTable dt, int PageIndex, int PageSize) { DataTable newdt = dt.Clone(); //复制dt数据表的架构 int rowbegin = (PageIndex -1 ) * PageSize; int rowend = PageIndex * PageSize; if(rowbeign >= dt.rows.Count) { return newdt; //起始记录行数大于等于总记录数 } if(rowend > dt.Rows.Count) { rowend = dt.Rows.Count; } for(int i= rowbegin; i< rowend; 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; }
2. 调用获取子数据表函数,显示某页数据在datagridview上
SqlDataAdapter da = new SqlDataAdapter();
DataTable newdt = new DataTable();
int PageIndex = 1;
int PageSize = 10;
............
SqlCommand com = new SqlCommand("querystring",sqlconnect);
da = new SqlDataAdapter(com);
da.Fill(dt);
newdt = GetPagedTable(dt,PageIndex,PageSize);
dataGridView1.DataSource = newdt;
3. 使用NumericUpDown组件动态控制每页显示的数据记录数
private void numericUpDown1_ValueChanged(object sender, EventArgs e) { PageIndex =1; PageSize = (int)numericUpDown1.Value; DataTable newdt = GetPagedTable(dt, PageIndex, PageSize); dataGridView1.DataSource = newdt; }