分页
来源:互联网 发布:伊丽莎白雅顿银级 知乎 编辑:程序博客网 时间:2024/06/08 19:15
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
namespace Pages
{
public partial class Form2 : Form
{
string connectString;
DataSet ds;
SqlParameter[] paras = new SqlParameter[4];//防止注入性攻击,存储过程传参数和防注入
int pageCount, pageSize, pageIndex, recordCount;
bool error;
public Form2()
{
InitializeComponent();
}
private void Form2_Load(object sender, EventArgs e)
{
pageSize = 50;
pageIndex = 0;
connectString = SQL.getCon();
if (!backgroundWorker1.IsBusy)
backgroundWorker1.RunWorkerAsync();
}
private void button1_Click(object sender, EventArgs e)
{
if (pageIndex < 1)
return;
pageIndex--;
if (!backgroundWorker1.IsBusy)
backgroundWorker1.RunWorkerAsync();
}
private void getPage(int pIndex)
{
ds = new DataSet();
using (SqlConnection con = new SqlConnection(connectString))
{
SqlCommand sc = new SqlCommand();
sc.Connection = con;
sc.CommandType = CommandType.StoredProcedure;
sc.CommandText = "Pages";
paras[0] = new SqlParameter("@PageIndex", SqlDbType.Int);
paras[0].Value = pIndex;
paras[1] = new SqlParameter("@PageSize", SqlDbType.Int);
paras[1].Value = pageSize;
paras[2] = new SqlParameter("@RecordCount", SqlDbType.Int);
paras[2].Direction = ParameterDirection.Output;
paras[3] = new SqlParameter("@PageCount", SqlDbType.Int);
paras[3].Direction = ParameterDirection.Output;
for (int i = 0; i < paras.Length; i++)
sc.Parameters.Add(paras[i]);
SqlDataAdapter da = new SqlDataAdapter(sc);
da.Fill(ds);
}
}
private void button2_Click(object sender, EventArgs e)
{
if (pageIndex == pageCount-1)
return;
pageIndex++;
if (!backgroundWorker1.IsBusy)
backgroundWorker1.RunWorkerAsync();
}
private void button3_Click(object sender, EventArgs e)
{
if (pageIndex == 0)
return;
pageIndex = 0;
if (!backgroundWorker1.IsBusy)
backgroundWorker1.RunWorkerAsync();
}
private void button4_Click(object sender, EventArgs e)
{
if (pageIndex == pageCount-1)
return;
pageIndex = pageCount-1;
if (!backgroundWorker1.IsBusy)
backgroundWorker1.RunWorkerAsync();
}
private void textBox1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter )
{
int pIndex;
pIndex = Convert.ToInt32(textBox1.Text);
if (pIndex >= pageCount || pIndex < 0)
{
MessageBox.Show("范围不对");
textBox1.Text = "";
}
else
{
pageIndex = pIndex;
if (!backgroundWorker1.IsBusy)
backgroundWorker1.RunWorkerAsync();
}
}
}
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
try
{
getPage(pageIndex);
error = false;
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
error = true;
}
}
private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
if (!error)
{
recordCount = Convert.ToInt32(paras[2].Value);
pageCount = Convert.ToInt32(paras[3].Value);
label1.Text = pageCount + "页 " + recordCount + "条记录";
dataGridView1.DataSource = ds.Tables[0];
textBox1.Text = pageIndex.ToString();
}
}
private void button5_Click(object sender, EventArgs e)
{
DataGridView[] dg = { dataGridView1 };
DataGridViewPrint dgp = new DataGridViewPrint(dg);
dgp.Print();
}
}
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
namespace Pages
{
public partial class Form2 : Form
{
string connectString;
DataSet ds;
SqlParameter[] paras = new SqlParameter[4];//防止注入性攻击,存储过程传参数和防注入
int pageCount, pageSize, pageIndex, recordCount;
bool error;
public Form2()
{
InitializeComponent();
}
private void Form2_Load(object sender, EventArgs e)
{
pageSize = 50;
pageIndex = 0;
connectString = SQL.getCon();
if (!backgroundWorker1.IsBusy)
backgroundWorker1.RunWorkerAsync();
}
private void button1_Click(object sender, EventArgs e)
{
if (pageIndex < 1)
return;
pageIndex--;
if (!backgroundWorker1.IsBusy)
backgroundWorker1.RunWorkerAsync();
}
private void getPage(int pIndex)
{
ds = new DataSet();
using (SqlConnection con = new SqlConnection(connectString))
{
SqlCommand sc = new SqlCommand();
sc.Connection = con;
sc.CommandType = CommandType.StoredProcedure;
sc.CommandText = "Pages";
paras[0] = new SqlParameter("@PageIndex", SqlDbType.Int);
paras[0].Value = pIndex;
paras[1] = new SqlParameter("@PageSize", SqlDbType.Int);
paras[1].Value = pageSize;
paras[2] = new SqlParameter("@RecordCount", SqlDbType.Int);
paras[2].Direction = ParameterDirection.Output;
paras[3] = new SqlParameter("@PageCount", SqlDbType.Int);
paras[3].Direction = ParameterDirection.Output;
for (int i = 0; i < paras.Length; i++)
sc.Parameters.Add(paras[i]);
SqlDataAdapter da = new SqlDataAdapter(sc);
da.Fill(ds);
}
}
private void button2_Click(object sender, EventArgs e)
{
if (pageIndex == pageCount-1)
return;
pageIndex++;
if (!backgroundWorker1.IsBusy)
backgroundWorker1.RunWorkerAsync();
}
private void button3_Click(object sender, EventArgs e)
{
if (pageIndex == 0)
return;
pageIndex = 0;
if (!backgroundWorker1.IsBusy)
backgroundWorker1.RunWorkerAsync();
}
private void button4_Click(object sender, EventArgs e)
{
if (pageIndex == pageCount-1)
return;
pageIndex = pageCount-1;
if (!backgroundWorker1.IsBusy)
backgroundWorker1.RunWorkerAsync();
}
private void textBox1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter )
{
int pIndex;
pIndex = Convert.ToInt32(textBox1.Text);
if (pIndex >= pageCount || pIndex < 0)
{
MessageBox.Show("范围不对");
textBox1.Text = "";
}
else
{
pageIndex = pIndex;
if (!backgroundWorker1.IsBusy)
backgroundWorker1.RunWorkerAsync();
}
}
}
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
try
{
getPage(pageIndex);
error = false;
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
error = true;
}
}
private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
if (!error)
{
recordCount = Convert.ToInt32(paras[2].Value);
pageCount = Convert.ToInt32(paras[3].Value);
label1.Text = pageCount + "页 " + recordCount + "条记录";
dataGridView1.DataSource = ds.Tables[0];
textBox1.Text = pageIndex.ToString();
}
}
private void button5_Click(object sender, EventArgs e)
{
DataGridView[] dg = { dataGridView1 };
DataGridViewPrint dgp = new DataGridViewPrint(dg);
dgp.Print();
}
}
}