关于ASP分页代码的问题

问题描述

关于ASP分页代码的问题

本人新手一个,请教个问题。

在做ASP分页的时候,无论你设置每页多少条记录,第一页的时候会把所有记录显示出来,第二页时会把除了第一页的条数全显示出来。

比如设置每页10条记录。第一页会把所有记录显示出来,第二页会把除了前10条记录的剩下所有记录显示出来。

请问这是什么原因??

晕啊。。。。。。。。没有C币

解决方案

分页是一个说起来复杂 但是又不是很复杂的东西 但是要做好 真心不容易
不过你运气好 我昨天刚写完,net将分页写成一个控件,下面是源码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;

namespace ASP.NET_04.Control
{
public partial class GridViewControl : System.Web.UI.UserControl
{
DBHelper db = new DBHelper();

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            BindDataGirdView();
        }
    }

    #region 设置属性
    /// <summary>
    /// SQL语句
    /// </summary>
    public string SqlStr { get; set; } 

    /// <summary>
    /// 每页显示多少数据
    /// </summary>
    public int? PageSize { get; set; }

    /// <summary>
    /// 当前页数
    /// </summary>
    public int? PageIndex { get; set; }

    /// <summary>
    /// 排序字段
    /// </summary>
    public string SortId { get; set; }

    /// <summary>
    /// 列的显示设置 UserId|用户编号,UserName|用户姓名....
    /// </summary>
    public string ColumnString { get; set; }

    /// <summary>
    /// 链接到哪个页面
    /// </summary>
    public string LinkPage { get; set; }

    #endregion

    public void BindDataGirdView()
    {

        //共有多少条数据
        int countNum;
        if (PageSize == null)
        {
            PageSize = 10;
        }
        if (PageIndex == null)
        {
            PageIndex = 1;
        }

        DataTable dt = db.GetDataPage(SqlStr, int.Parse(PageSize.ToString()), int.Parse(PageIndex.ToString()), SortId, out countNum);
        labCount.Text = countNum.ToString();
        labPageSize.Text = PageSize.ToString();
        labPageIndex.Text = PageIndex.ToString();

        //总页数算法 (总数量+每页显示数据-1)/每页显示数据
        labCountPage.Text = ((countNum + PageSize - 1) / PageSize).ToString();

        GridView1.DataSource = dt;

        //处理列的显示
        //判断一下,是否存在列
        if (GridView1.Columns.Count == 0)
        {
            //加入显示列
            string[] lst = ColumnString.Split(',');

            for (int i = 0; i < lst.Length; i++)
            {
                BoundField bf = new BoundField();
                bf.DataField = lst[i].Split('|')[0];
                bf.HeaderText = lst[i].Split('|')[1];
                GridView1.Columns.Add(bf);
            }
            //加入模板列
            TemplateField tf = new TemplateField();
            tf.HeaderText = "操作";
            GridView1.Columns.Add(tf);

        }

        GridView1.DataBind();

        //给模板列加入内容
        for (int i = 0; i < GridView1.Rows.Count; i++)
        {
            GridView1.Rows[i].Cells[ColumnString.Split(',').Length].Text = "<a href='" + LinkPage + "?id=" + GridView1.Rows[i].Cells[0].Text + "'>编辑</a>";
        }

            if (PageIndex == 1)
            {
                btnFirst.Enabled = false; //首页
                btnPerv.Enabled = false;//上一页
            }
            else
            {
                btnFirst.Enabled = true; //首页
                btnPerv.Enabled = true;//上一页
            }

        if (PageIndex == int.Parse(labCountPage.Text))
        {
            btnNext.Enabled = false;  //下一页
            btnLast.Enabled = false;  //尾页
        }
        else
        {
            btnNext.Enabled = true;
            btnLast.Enabled = true;
        }
    }

    protected void btnFirst_Click(object sender, EventArgs e)
    {
        PageIndex = 1;
        BindDataGirdView();
    }

    protected void btnPerv_Click(object sender, EventArgs e)
    {
        if ((int.Parse(labPageIndex.Text) - 1) >= 1)
        {
            PageIndex = int.Parse(labPageIndex.Text) - 1;
            BindDataGirdView();
        }
    }

    protected void btnNext_Click(object sender, EventArgs e)
    {
        if ((int.Parse(labPageIndex.Text) + 1) <= int.Parse(labCountPage.Text))
        {
            PageIndex = int.Parse(labPageIndex.Text) + 1;
            BindDataGirdView();
        }
    }

    protected void btnLast_Click(object sender, EventArgs e)
    {
        PageIndex = int.Parse(labCountPage.Text);
        BindDataGirdView();
    }
}

}

数据底层的

///
/// 分页的方法
///
/// SQL查询语句
/// 每页显示多少数据
/// 当前页数
/// 排序
/// 输出参数,返回一共多少条数据
/// 返回数据表
public DataTable GetDataPage(string sql, int pageSize, int pageIndex, string sort, out int recordCount)
{
SqlConnection conn = new SqlConnection(sqlStr);
if (conn.State != ConnectionState.Open)
{
conn.Open();
}
SqlParameter[] parms = new SqlParameter[]
{
new SqlParameter("@Source",SqlDbType.NVarChar),
new SqlParameter("@PageSize",SqlDbType.Int),
new SqlParameter("@CurrentPage",SqlDbType.Int),
new SqlParameter("@FieldList",SqlDbType.NVarChar),
new SqlParameter("@Sort",SqlDbType.NVarChar),
new SqlParameter("@RecordCount",SqlDbType.Int),
new SqlParameter("@FdName",SqlDbType.NVarChar)
};
parms[0].Value = sql;
parms[1].Value = pageSize;
parms[2].Value = pageIndex;
parms[3].Value = DBNull.Value;
parms[4].Value = sort;
parms[5].Value = DBNull.Value;
parms[6].Value = DBNull.Value;
//设置参数类型是输出参数
parms[5].Direction = ParameterDirection.Output;

        SqlCommand cmd = new SqlCommand("pro_sys_GetRecordByPage2005", conn);
        cmd.CommandType = CommandType.StoredProcedure;

        foreach (SqlParameter p in parms)
        {
            cmd.Parameters.Add(p);
        }
        using (SqlDataAdapter sda = new SqlDataAdapter(cmd))
        {
            DataTable dt = new DataTable();
            sda.Fill(dt);
            recordCount = (int)parms[5].Value;
            return dt;
        }
    }
            可能有点简易  将就一下吧

解决方案二:

晕死 给错了 这是my teacher写的 不过应该会好一些0.0 不过,你把sql语句加上去还有排序字段 我这个是页面传的 还有这个是columnstring的赋值方式是id|编号,name|名字。。。。类似的

时间: 2024-08-04 00:53:05

关于ASP分页代码的问题的相关文章

asp分页代码

这是一段简单的asp分页显示代码并以asp 分页显示源代码的形式提供给大家,  代码如下 复制代码 <%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&q

ASP分页代码,已经写成类了,值得参考

ASP通用分页类 一.类的属性.方法 这是一个ASP通用分页类.你可以用它方便的给记录集分页,当然在网上有许多的分页类和分页函数.本分页主要有Conn.SQL.URL.FieldList.PageSize.Template.Init.Show.Close等属性和方法. 1.Conn属性 :用来获取一个已创建的Connection对象. 2.SQL属性 :根据传入的SQL语句,自动创建RecordSet对象 3.PageSize属性 :设置第页的记录条数 4.FieldList属性 :如果需要显示

简单的ASP分页代码(测试正确)第1/2页_ASP基础

本文匆匆已经全面测试,支持ASP+ACCESS以及ASP+SQL,请修改相关部分就可以了. 注意,匆匆谢绝基础问题回答,已经本代码已经很简单,如果还不懂可以参阅本站其他栏目. <!--#include file="conn.asp"--> <% '以上为包含数据库衔接文件 '--------------------------------------------查询开始数据库 set rs=server.CreateObject("adodb.records

简单的ASP分页代码(测试正确)第1/2页

本文匆匆已经全面测试,支持ASP+ACCESS以及ASP+SQL,请修改相关部分就可以了. 注意,匆匆谢绝基础问题回答,已经本代码已经很简单,如果还不懂可以参阅本站其他栏目. <!--#include file="conn.asp"--> <% '以上为包含数据库衔接文件 '--------------------------------------------查询开始数据库 set rs=server.CreateObject("adodb.records

asp 分页代码

分页 使用asp作东西已经比较多了,但是一直没有注意这个东西,今天就花了一点时间写了一些,方便以后使用. <%SUB ListPageMenu(objRs,intrsPageSize) Dim rsTotal,rsPageSize,rsPageCount If NOT ISObject(objRs) Then Exit Sub:End If If NOT IsNumeric(rsPageSize) Then Exit Sub:End IF If objRs.Eof And objRs.Bof T

ASP分页代码的学习

分页 <%'******************************************************************'** 本程序名:"无限流"分页程序'** 作者:Arbiter(AAsx)'** 版本:Million Level'**'** QQ:22222xx'** Email:Arbiter@21cn.com'** http://www.imagecity.org/'***************************************

asp分页代码(经典)

 代码如下 复制代码 function showpage(sto,allpage,page)  '根据总页数与当前页数显示页数  dim first,last  page=max(min(page,allpage),1)  if (allpage>1) then    if (allpage>10) then    response.write "<a href='" & sto & "page=1'><<</a>

最简单的ASP分页代码

<% set conn=server.createobject("adodb.connection") conn.open("DRIVER=Driver do Microsoft Access (*.mdb);UID=admin;pwd=;dbq="&server.mappath("1.mdb")) set rs=server.createobject("adodb.recordset") sql="s

asp分页代码(通用)

<% 记录集名字_total = 记录集名字.RecordCount If (记录集名字_numRows < 0) Then 记录集名字_numRows = 记录集名字_total Elseif (记录集名字_numRows = 0) Then 记录集名字_numRows = 1 End If 记录集名字_first = 1 记录集名字_last = 记录集名字_first + 记录集名字_numRows - 1 If (记录集名字_total <> -1) Then If (记录