分页

来源:互联网 发布:伊丽莎白雅顿银级 知乎 编辑:程序博客网 时间: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();
        }
    }

} 


原创粉丝点击