这个是html部分的代码:
<form id="form1" runat="server">
        <asp:GridView ID="GridView1" runat="server" Height="186px" Width="960px" 
            AutoGenerateColumns="false" PageSize="3" AllowPaging="true">
            <Columns>
                <asp:BoundField DataField="id" HeaderText="编号" 
                        ItemStyle-CssClass="tb_article_td" ItemStyle-Height="22" 
                        HeaderStyle-Font-Bold="true" HeaderStyle-BackColor="#EEEEEE" HeaderStyle-Height="25" />
                <asp:BoundField DataField="art_topic" 
                        ItemStyle-CssClass="tb_article_td"
                        HeaderText="文章标题" HeaderStyle-Font-Bold="true" HeaderStyle-BackColor="#EEEEEE" />
                <asp:BoundField DataField="art_author"
                        ItemStyle-CssClass="tb_article_td"
                        HeaderText="文章作者" HeaderStyle-Font-Bold="true" HeaderStyle-BackColor="#EEEEEE" />
                <asp:BoundField DataField="art_created" 
                        ItemStyle-CssClass="tb_article_td"
                        HeaderText="添加时间" HeaderStyle-Font-Bold="true" HeaderStyle-BackColor="#EEEEEE" />
                <asp:BoundField DataField="art_hit" 
                        ItemStyle-CssClass="tb_article_td" 
                        HeaderText="点击次数" HeaderStyle-Font-Bold="true" HeaderStyle-BackColor="#EEEEEE" />
            </Columns>
            <PagerTemplate>
                <center>
                <asp:LinkButton ID="PageFirst" Text="首页" CommandArgument="First" CommandName="Page" OnClick="PageCut_Click" runat="server"></asp:LinkButton>&nbsp;&nbsp;&nbsp;&nbsp;
                <asp:LinkButton ID="PagePre" Text="上一页" CommandArgument="Prev" OnClick="PageCut_Click" runat="server"></asp:LinkButton>&nbsp;&nbsp;&nbsp;&nbsp;
                <asp:LinkButton ID="PageNet" Text="下一页" CommandArgument="Next" OnClick="PageCut_Click" runat="server"></asp:LinkButton>&nbsp;&nbsp;&nbsp;&nbsp;
                <asp:LinkButton ID="PageLast" Text="末页" CommandArgument="Last" OnClick="PageCut_Click" runat="server"></asp:LinkButton>
                </center>
            </PagerTemplate>
        </asp:GridView>
        <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label><br /><br />
        <asp:Label ID="Label2" runat="server" Text="Label"></asp:Label>
    </form>
这个是 CS部分的代码:
public partial class _Default : System.Web.UI.Page 
{
    OleDbConnection Conn;
    DataSet Ds;
    OleDbDataAdapter Ada;    protected void Page_Load(object sender, EventArgs e)
    {
        CreateConn();
        CreateDataSet();
        GirdBind();
    }    protected void PageCut_Click(object sender, EventArgs e)
    {
        string args = ((LinkButton)sender).CommandArgument;
        this.Label2.Text += "当前索引:" + this.GridView1.PageIndex.ToString();
        switch (args)
        { 
            case "First":
                this.GridView1.PageIndex = 0;
                break;
            case "Pre":
                this.GridView1.PageIndex = (int)Math.Max(0, this.GridView1.PageIndex - 1);
                break;
            case "Next":
                if (this.GridView1.PageIndex < this.GridView1.PageCount - 1)
                {
                    this.GridView1.PageIndex = this.GridView1.PageIndex + 1;
                }
                else
                {
                    this.GridView1.PageIndex = this.GridView1.PageCount - 1;
                }
                //this.GridView1.PageIndex = (int)Math.Min(this.GridView1.PageCount - 1, this.GridView1.PageIndex + 1);
                break;
            case "Last":
                this.GridView1.PageIndex = this.GridView1.PageCount - 1;
                break;
            default:
                this.GridView1.PageIndex = 0;
                break;
        }
       
        this.Label1.Text = (this.GridView1.PageIndex+1).ToString() + "/" + this.GridView1.PageCount.ToString();
        GirdBind();
    }    protected void GirdBind()
    {
        string SQL = "select id,art_topic,art_author,art_created,art_hit from article";
        Ada = new OleDbDataAdapter(SQL, Conn);
        Ada.Fill(Ds, "Article");
        this.GridView1.DataSource = Ds.Tables["Article"];
        this.GridView1.DataBind();        CloseConn();    
    }    protected void CreateConn()
    {
        string ConnString = "provider=Microsoft.Jet.Oledb.4.0;Data Source=" + Server.MapPath("data/Test.mdb");
        Conn = new OleDbConnection(ConnString);
        Conn.Open();
    }    protected void CreateDataSet()
    {
        Ds = new DataSet();
    }    protected void CloseConn()
    {
        Conn.Close();
    }
}
这是数据库内容:
id art_topic art_author art_created art_text art_hit
1 文件标题是什么? 西门吹雪 2009-3-25 18:53:25 2
2 标准建模语言UML教程 南宫剑 2009-3-25 18:53:25 3
3 两个局外人的对谈录 十年砍柴 2009-3-25 18:53:25 5
4 C#邮件群发 阿森 2009-3-25 18:53:25 6
5 打死我,我也不去美国当市长! 中国 2009-3-25 18:53:25 7
6 狄 马:鼓一次明白的掌 杨恒均 2009-3-25 18:53:25 8
7 发现又一个中国特色 林达 2009-3-25 18:53:25 12
8 久违了:大会在雄壮的《国际歌》声中结束 自由门 2009-3-25 18:53:25 43
这是点击末页时的效果:编号 文章标题 文章作者 添加时间 点击次数 
7 发现又一个中国特色 林达 2009-3-25 18:53:25 12 
8 久违了:大会在雄壮的《国际歌》声中结束 自由门 2009-3-25 18:53:25 43 
1 文件标题是什么? 西门吹雪 2009-3-25 18:53:25 2 
首页     上一页     下一页     末页  

问题是:为什么点击末页,第7,8条记录下面会出现第一条记录呢?

解决方案 »

  1.   

     看不错来错误,8懂为什么会出现第一条数据。
      顶下。
    不过GridView不是有内置的分页功能么?  用那个看看把
      

  2.   

    谢谢,另有一问,
    我在<GirdView>的<Columns>与</Columns>之间,加了一个<asp:Label ID="lb1" />
    为什么在 cs 文件中,用
    this.lb1.Text = ...
    会报错说“不存在lb1..."呢?谢谢楼上兄弟!
      

  3.   

    我觉得分页还是用Sql语句实现好,要不数据量大了太慢了,你如果要找到那个Label,需要在绑定事件中用FinControl方法
      

  4.   

    在Page_Load加上   if(!ispostback)
    lable 在gridview中 不能世界找到  需要 find
      

  5.   

    Dataset 的 DataTable 不是脱机的吗? 直接操作DataTable里的行或列,是不是更快?
    DataTable 里的数据不是只要需要才再次连接数据库的吗?
      

  6.   

     GirdBind();
    是不是需要放在if(!ispostback) 
    里面?
      

  7.   


      用aspnetpager 吧。很简单的。
      

  8.   


    string SQL = "select id,art_topic,art_author,art_created,art_hit from article";就默认的啊,没有按什么。
      

  9.   

    刚google了一下,试试,谢谢大哥!我是搞php的,才入.net 的行。
      

  10.   

      protected void LinkUp_Click(object sender, EventArgs e)
        {//DataGrid的上一页
            if (this.DataGrid1.CurrentPageIndex == 0)
            {
                return;
            }
            else
            {
                this.DataGrid1.CurrentPageIndex = this.DataGrid1.CurrentPageIndex - 1;
                DataCreate();
                this.DropDownList1.SelectedValue = Convert.ToString(this.DataGrid1.CurrentPageIndex + 1);
            }
            //下两行是判断是否把上一页下一页的热键取消
            this.LinkUp.Enabled = (DataGrid1.CurrentPageIndex + 1 == 1) ? false : true;
            this.LinkDown.Enabled = (DataGrid1.PageCount == this.DataGrid1.CurrentPageIndex + 1) ? false : true;
        }
        protected void LinkDown_Click(object sender, EventArgs e)
        {//DataGrid的下一页
            if (this.DataGrid1.CurrentPageIndex == this.DataGrid1.PageCount - 1)
            {
                return;
            }
            else
            {
                this.DataGrid1.CurrentPageIndex = this.DataGrid1.CurrentPageIndex + 1;
                DataCreate();
                this.DropDownList1.SelectedValue = Convert.ToString(this.DataGrid1.CurrentPageIndex + 1);
            }
            //下两行是判断是否把上一页下一页的热键取消
            this.LinkUp.Enabled = (DataGrid1.CurrentPageIndex + 1 == 1) ? false : true;
            this.LinkDown.Enabled = (DataGrid1.PageCount == this.DataGrid1.CurrentPageIndex + 1) ? false : true;
        }
        protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
        {
            try
            {
                this.DataGrid1.CurrentPageIndex = Int32.Parse(this.DropDownList1.SelectedValue) - 1;
                DataCreate();            //下两行是判断是否把上一页下一页的热键取消
                this.LinkUp.Enabled = (DataGrid1.CurrentPageIndex + 1 == 1) ? false : true;
                this.LinkDown.Enabled = (DataGrid1.PageCount == this.DataGrid1.CurrentPageIndex + 1) ? false : true;
            }
            catch (Exception ee)
            {
                throw ee;
            }
        }
      

  11.   

    参考:http://www.cnblogs.com/insus/articles/1417957.html