日期:2014-05-18 浏览次数:20518 次
 private static string ConStr = ConfigurationManager.ConnectionStrings["ConnectionNorthwind"].ConnectionString;
    double _totalPages;
    Int32 _currentPageNumber = 1;
    //以下两种的存储过程数据表中的数据都是万级别的,各种方法的效率差别不是很大
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            BindDataReturn(_currentPageNumber);
           // BindData(_currentPageNumber);
        }
    }
    //调用采用临时表分页的存储过程
    private void BindData(int pageIndex)
    {
        using (SqlConnection Con = new SqlConnection(ConStr))
        {
            using (SqlCommand Cmd = new SqlCommand("Get_Customers_By_Page", Con))
            {
                Cmd.CommandType = CommandType.StoredProcedure;
                Cmd.Parameters.AddWithValue("@CurrentPage", pageIndex);
                Cmd.Parameters.AddWithValue("@PageSize", gvCustomer.PageSize);
                SqlParameter ParmTotal = new SqlParameter("@TotalRecords", SqlDbType.Int);
                //获取存储过程中的输出参数
                ParmTotal.Direction = ParameterDirection.Output;
                Cmd.Parameters.Add(ParmTotal);
                //Cmd.Parameters.Add(new SqlParameter("@TotalRecords",SqlDbType.Int)).Direction = ParameterDirection.Output;
                Con.Open();
                gvCustomer.DataSource = Cmd.ExecuteReader(CommandBehavior.CloseConnection);
                gvCustomer.DataBind();
                CurrentPage.Text = _currentPageNumber.ToString();
                if (!Page.IsPostBack)
                {
                    //必须关闭DR才能正确的获取输出参数的值
                    int Total = ((Int32)Cmd.Parameters["@TotalRecords"].Value);
                    _totalPages = Total / ((int)gvCustomer.PageSize);
                    TotalPages.Text = (System.Math.Ceiling(_totalPages)).ToString();
                }
                if (_currentPageNumber == 1)
                {
                    PreviousPage.Enabled = false;
                    if (_totalPages > 1)
                    {
                        NextPage.Enabled = true;
                    }
                    else
                    {
                        NextPage.Enabled = false;
                    }
                }
                else
                {
                    PreviousPage.Enabled = true;
                    if (_currentPageNumber == _totalPages)
                    {
                        NextPage.Enabled = false;
                    }
                    else
                    {
                        NextPage.Enabled = true;
                    }