using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
using System.Text.RegularExpressions;
namespace Test
{
public partial class ChangeInOutState : Form
{
public ChangeInOutState()
{
InitializeComponent();
}
private int Inum = 1; //行号,规定其索引初始值为1
int pagesize = 15;//每页显示多少条记录
int allCount = 0;//记录总数
int pagecount = 0;//一共有多少页
/// <summary>窗体加载事件
/// 窗体加载事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void ChangeInOutState_Load(object sender, EventArgs e)
{
using (SqlConnection connection = new SqlConnection(DBHelpers.SqlHelper.conn))
{
SqlDataAdapter da = new SqlDataAdapter("select * from tb_PoliceServiceSet", connection);
DataTable dt = new DataTable();
da.Fill(dt);
allCount = dt.Rows.Count; //获取数据表中记录的个数
pagecount = allCount % pagesize; //页数 = 总数/显示的行数
//只能显示一页,判断是否是整除
if (pagecount == 0)
{
pagecount = allCount / pagesize;
}
else
{
pagecount = allCount / pagesize + 1;
}
this.lblCount.Text = "共" + pagecount.ToString() + "页";
show(1, 4); //分页显示记录
this.lblPageNo.Text = "当前第" + Inum.ToString() + "页";
}
}
/// <summary>
/// 分页显示数据表中的信息
/// </summary>
/// <param name="start"></param>
/// <param name="end"></param>
private void show(int start, int end)
{
SqlConnection connection = new SqlConnection(DBHelpers.SqlHelper.conn);
SqlDataAdapter das = new SqlDataAdapter("select top " + pagesize + " * from tb_PoliceServiceSet where PoliceCardNo not in (select top " + pagesize * (Inum - 1) + " PoliceCardNo from tb_PoliceServiceSet)", connection); //sql语句
DataSet ds = new DataSet();
//显示指定范围的记录
das.Fill(ds, "one");
this.dataGridView1.DataSource = ds.Tables["one"].DefaultView; //绑定显示数据
ds = null;
}
//测试数据库连接
private void button1_Click(object sender, EventArgs e)
{
try
{
SqlConnection conn = new SqlConnection(DBHelpers.SqlHelper.conn);
conn.Open();
if (conn.State == ConnectionState.Open)
{
MessageBox.Show("链接成功");
conn.Close();
}
else
{
MessageBox.Show("链接失败");
}
}
catch
{
MessageBox.Show("链接失败");
}
}
/// <summary>首页
/// 首页
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void linkFirst_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
Inum = 1;
this.lblPageNo.Text = "当前第" + Inum.ToString() + "页";
show(Inum, pagesize);
}
/// <summary>上一页
/// 上一页
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void linkBefore_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
Inum--;
if (Inum > 0) //如果当前不是首记录
{
this.lblPageNo.Text = "当前第" + Inum.ToString() + "页";
show(Inum, pagesize); //显示上一页记录
}
else
{
MessageBox.Show("现已是第一页记录");
Inum = 1;
return;
}
}
/// <summary>下一页
/// 下一页
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void linkNext_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
Inum++;
if (Inum <=pagecount) //如果没有超出记录行数
{
this.lblPageNo.Text = "当前第" + Inum.ToString() + "页";
show(Inum, pagesize);
}
else
{
MessageBox.Show("现已是最后一页记录");
Inum = pagecount - 1;
return;
}
}
/// <summary>尾页
/// 尾页
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void linkFinally_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
Inum = pagecount;
this.lblPageNo.Text = "当前第" + Inum.ToString() + "页";
show(Inum - 1, pagesize);
}
/// <summary>跳转到多少页
/// 跳转到多少页
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void linkSubmit_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
if (IsNumeric(txtPageNo.Text.Trim()))
{
if (int.Parse(txtPageNo.Text)>pagecount)
{
}
else if (int.Parse(txtPageNo.Text) < 1)
{
}
else
{
Inum = int.Parse(txtPageNo.Text);
lblPageNo.Text = "当前第" + Inum.ToString() + "页";
show(int.Parse(txtPageNo.Text), pagesize);
}
}
else
{
MessageBox.Show("请输入正整数!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
}
}
//判断输入值是否为数字
public static bool IsNumeric(string value)
{
return Regex.IsMatch(value, @"^[+-]?\d*[.]?\d*$");
}
/// <summary>
/// 刷新数据按钮
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnRefresh_Click(object sender, EventArgs e)
{
show(Inum, pagesize);
}
}
}
测试已成功,如果有需要讲解的地方,可以给我留言,共同进步