我的代码:
    
    public void dlBind()
    {
        
        int curpage = Convert.ToInt32(this.Label1.Text);
        
        SqlConnection mycon = GetConnection();        
        string cmdtxt1 = "SELECT * FROM tb_LeaveWord order by bianhao desc";
        SqlDataAdapter MyAdapter = new SqlDataAdapter();
        MyAdapter.SelectCommand = new SqlCommand(cmdtxt1, mycon);
        DataSet ds = new DataSet();
        MyAdapter.Fill(ds, "tb_LeaveWord");        PagedDataSource ps = new PagedDataSource();
        ps.DataSource = ds.Tables["tb_LeaveWord"].DefaultView;
        ps.AllowPaging = true; //是否可以分页        ps.PageSize = 3; //显示的数量
        ps.CurrentPageIndex = curpage - 1; //取得当前页的页码        Button1.Enabled = true;
        Button2.Enabled = true;
        Button3.Enabled = true;
        Button4.Enabled = true;
        if (curpage == 1)
        {
            Button1.Enabled = false;//不显示第一页按钮
            Button2.Enabled = false;//不显示上一页按钮
        }
 
        if (curpage == ps.PageCount)
        {
            Button3.Enabled = false;//不显示下一页
            Button4.Enabled = false;//不显示最后一页
        }
        this.labCount.Text = Convert.ToString(ps.PageCount);
        mycon.Open();
        SqlCommand cmd = new SqlCommand("select count(*) from tb_LeaveWord", mycon);
        this.Label2.Text = Convert.ToString((int)cmd.ExecuteScalar());
        mycon.Close();        this.DataList1.DataSource = ps;
        this.DataList1.DataKeyField = "bianhao";
        this.DataList1.DataBind();
    }
上一页和下一页代码:
        protected void Button2_Click(object sender, EventArgs e)
    {
        this.Label1.Text = Convert.ToString(Convert.ToInt32(this.Label1.Text) - 1);
        this.dlBind();
    }    //下一页
    protected void Button3_Click(object sender, EventArgs e)
    {
        this.Label1.Text = Convert.ToString(Convert.ToInt32(this.Label1.Text) + 1);
        this.dlBind();
    }
问题:
  按下一页只能查看到第二页,虽然一共不只2页,但怎么按都只能保持在第二页;
  按上一页的时候就会出现代码提示:
          异常详细信息: System.IndexOutOfRangeException: 索引 -3 不是为负数,就是大于行数。          源错误: 
         行 81:         this.DataList1.DataSource = ps;
         行 82:         this.DataList1.DataKeyField = "bianhao";
         行 83:         this.DataList1.DataBind();
         行 84:     }
         行 85:     public SqlConnection GetConnection()//获取数据联结         堆栈跟踪: 
        [IndexOutOfRangeException: 索引 -3 不是为负数,就是大于行数。]
           System.Data.DataView.GetElement(Int32 index) +60
           System.Data.DataView.System.Collections.IList.get_Item(Int32 recordIndex) +5
           System.Web.UI.WebControls.EnumeratorOnIList.get_Current() +23
           System.Web.UI.WebControls.DataList.CreateControlHierarchy(Boolean useDataSource) +520
           System.Web.UI.WebControls.BaseDataList.OnDataBinding(EventArgs e) +57
           System.Web.UI.WebControls.BaseDataList.DataBind() +62
           message.dlBind() in d:\百特\baite\message.aspx.cs:83
           message.Button2_Click(Object sender, EventArgs e) in d:\百特\baite\message.aspx.cs:107
           System.Web.UI.WebControls.LinkButton.OnClick(EventArgs e) +75
           System.Web.UI.WebControls.LinkButton.RaisePostBackEvent(String eventArgument) +97
          System.Web.UI.WebControls.LinkButton.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +7
           System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String   eventArgument) +11
           System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +172
           System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +4926这个问题到底出在哪?让我烦恼了好几天,还请大侠们帮仔细看下我的代码有没哪出问题了,万分感激!!!

解决方案 »

  1.   

    顶一个……int curpage = Convert.ToInt32(this.Label1.Text); 查你的 curpage是多少,你这种,通地 label.text来做载体的做法……不知道你为什么要用这种方式。
      

  2.   

    看不太出什么问题,这是我做的一个分页测试页面(可以直接运行),楼主参考一下:testPage.aspx
    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="testPage.aspx.cs" Inherits="testPage" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" >
    <head runat="server">
        <title>无标题页</title>
    </head>
    <body>
        <form id="form1" runat="server">
        
        <asp:DataList ID="DataList1" runat="server">
                <ItemTemplate>
                     <table cellpadding="0" cellspacing="0" style="width: 400px;">
                      <tr>                
                         <td>
                           <asp:Label ID="Label1" runat="server" Font-Size="9pt" Text='<%# Eval("title") %>' ForeColor="Black"></asp:Label></td>
                        </tr>
                       </table>
                </ItemTemplate>
     </asp:DataList>
     <br />
     <table cellpadding="0" cellspacing="0">
            <tr>
                <td style="width: 100px">
                    <asp:Label ID="Label5" runat="server" Font-Size="9pt" Text="当前页为 [ ">
                    </asp:Label><asp:Label ID="Label7" runat="server" Text="1" Font-Size="9pt"></asp:Label>
                    <asp:Label ID="Label3" runat="server" Font-Size="9pt" Text=" ]"></asp:Label></td>
                <td style="width: 40px">
                    <asp:LinkButton ID="LinkButton2" runat="server" Font-Size="9pt" Font-Underline="False"
                        ForeColor="Red" OnClick="LinkButton2_Click">首页</asp:LinkButton></td>
                <td style="width: 30px">
                    <asp:LinkButton ID="LinkButton3" runat="server" Font-Size="9pt" Font-Underline="False"
                        ForeColor="Red" OnClick="LinkButton3_Click" Width="42px">上一页</asp:LinkButton></td>
                <td style="width: 48px">
                    <asp:LinkButton ID="LinkButton4" runat="server" Font-Size="9pt" Font-Underline="False"
                        ForeColor="Red" OnClick="LinkButton4_Click" Width="48px">下一页</asp:LinkButton></td>
                <td style="width: 49px">
                    <asp:LinkButton ID="LinkButton5" runat="server" Font-Size="9pt" Font-Underline="False"
                        ForeColor="Red" OnClick="LinkButton5_Click" Width="29px">尾页</asp:LinkButton></td>
                <td align="center" style="width: 118px">
                    <asp:Label ID="Label10" runat="server" Text="总页为 [ " Font-Size="9pt" Width="52px"></asp:Label>
                    <asp:Label ID="Label2" runat="server" Font-Size="9pt"></asp:Label>
                    <asp:Label ID="Label4" runat="server" Font-Size="9pt" Text=" ]"></asp:Label></td>
            </tr>
        </table>
        </form>
    </body>
    </html>testPage.aspx.cs[code=C#]
    using System;
    using System.Data;
    using System.Configuration;
    using System.Collections;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;public partial class testPage : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                dlBind();
            }
        }
        public void dlBind()
        {
            int curpage = Convert.ToInt32(this.Label7.Text);
            PagedDataSource ps = new PagedDataSource();
            DataSet ds = bind();
            
            ps.DataSource = ds.Tables[0].DefaultView;
            ps.AllowPaging = true; //是否可以分页
            ps.PageSize = 10; //显示的数量
            ps.CurrentPageIndex = curpage - 1; //取得当前页的页码
            this.LinkButton3.Enabled = true;
            this.LinkButton4.Enabled = true;
            this.LinkButton5.Enabled = true;
            this.LinkButton2.Enabled = true;
            if (curpage == 1)
            {
                this.LinkButton2.Enabled = false;//不显示第一页按钮
                this.LinkButton3.Enabled = false;//不显示上一页按钮
            }
            if (curpage == ps.PageCount)
            {
                this.LinkButton4.Enabled = false;//不显示下一页
                this.LinkButton5.Enabled = false;//不显示最后一页
            }
            this.Label2.Text = Convert.ToString(ps.PageCount);
            this.DataList1.DataSource = ps;
            this.DataList1.DataKeyField = "id";
            this.DataList1.DataBind();
        }
      
        protected void LinkButton2_Click(object sender, EventArgs e)  //第一页
        {
            this.Label7.Text = "1";   //Label7.Text为当前页
            this.dlBind();
        }
        protected void LinkButton3_Click(object sender, EventArgs e) //上一页
        {
            this.Label7.Text = Convert.ToString(Convert.ToInt32(this.Label7.Text) - 1);
            this.dlBind();
        }
        protected void LinkButton4_Click(object sender, EventArgs e)  //下一页
        {
            this.Label7.Text = Convert.ToString(Convert.ToInt32(this.Label7.Text) + 1);
            this.dlBind();
        }
        protected void LinkButton5_Click(object sender, EventArgs e)  //最后一页
        {
            this.Label7.Text = this.Label2.Text; //Label2.Text为总页数
            this.dlBind();
        }
        DataSet bind()
        {
            DataSet ds = new DataSet();
            DataTable dt = new DataTable();
            DataRow dr;
            dt.Columns.Add(new DataColumn("id", typeof(Int32)));
            dt.Columns.Add(new DataColumn("title", typeof(String)));
            for (int i = 0; i < 100; i++)
            {
                dr = dt.NewRow();
                dr[0] = i;
                dr[1] = "分页测试数据... " + i.ToString();
                dt.Rows.Add(dr);
            }
            ds.Tables.Add(dt);
            return ds;
        }}[/code]
      

  3.   

    重新排版一下:
    testPage.aspx<%@ Page Language="C#" AutoEventWireup="true" CodeFile="testPage.aspx.cs" Inherits="testPage" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" >
    <head runat="server">
        <title>无标题页</title>
    </head>
    <body>
        <form id="form1" runat="server">
        
        <asp:DataList ID="DataList1" runat="server">
                <ItemTemplate>
                     <table cellpadding="0" cellspacing="0" style="width: 400px;">
                      <tr>                
                         <td>
                           <asp:Label ID="Label1" runat="server" Font-Size="9pt" Text='<%# Eval("title") %>' ForeColor="Black"></asp:Label></td>
                        </tr>
                       </table>
                </ItemTemplate>
     </asp:DataList>
     <br />
     <table cellpadding="0" cellspacing="0">
            <tr>
                <td style="width: 100px">
                    <asp:Label ID="Label5" runat="server" Font-Size="9pt" Text="当前页为 [ ">
                    </asp:Label><asp:Label ID="Label7" runat="server" Text="1" Font-Size="9pt"></asp:Label>
                    <asp:Label ID="Label3" runat="server" Font-Size="9pt" Text=" ]"></asp:Label></td>
                <td style="width: 40px">
                    <asp:LinkButton ID="LinkButton2" runat="server" Font-Size="9pt" Font-Underline="False"
                        ForeColor="Red" OnClick="LinkButton2_Click">首页</asp:LinkButton></td>
                <td style="width: 30px">
                    <asp:LinkButton ID="LinkButton3" runat="server" Font-Size="9pt" Font-Underline="False"
                        ForeColor="Red" OnClick="LinkButton3_Click" Width="42px">上一页</asp:LinkButton></td>
                <td style="width: 48px">
                    <asp:LinkButton ID="LinkButton4" runat="server" Font-Size="9pt" Font-Underline="False"
                        ForeColor="Red" OnClick="LinkButton4_Click" Width="48px">下一页</asp:LinkButton></td>
                <td style="width: 49px">
                    <asp:LinkButton ID="LinkButton5" runat="server" Font-Size="9pt" Font-Underline="False"
                        ForeColor="Red" OnClick="LinkButton5_Click" Width="29px">尾页</asp:LinkButton></td>
                <td align="center" style="width: 118px">
                    <asp:Label ID="Label10" runat="server" Text="总页为 [ " Font-Size="9pt" Width="52px"></asp:Label>
                    <asp:Label ID="Label2" runat="server" Font-Size="9pt"></asp:Label>
                    <asp:Label ID="Label4" runat="server" Font-Size="9pt" Text=" ]"></asp:Label></td>
            </tr>
        </table>
        </form>
    </body>
    </html>
    testPage.aspx.cs
    using System;
    using System.Data;
    using System.Configuration;
    using System.Collections;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;public partial class testPage : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                dlBind();
            }
        }
        public void dlBind()
        {
            int curpage = Convert.ToInt32(this.Label7.Text);
            PagedDataSource ps = new PagedDataSource();
            DataSet ds = bind();
            
            ps.DataSource = ds.Tables[0].DefaultView;
            ps.AllowPaging = true; //是否可以分页
            ps.PageSize = 10; //显示的数量
            ps.CurrentPageIndex = curpage - 1; //取得当前页的页码
            this.LinkButton3.Enabled = true;
            this.LinkButton4.Enabled = true;
            this.LinkButton5.Enabled = true;
            this.LinkButton2.Enabled = true;
            if (curpage == 1)
            {
                this.LinkButton2.Enabled = false;//不显示第一页按钮
                this.LinkButton3.Enabled = false;//不显示上一页按钮
            }
            if (curpage == ps.PageCount)
            {
                this.LinkButton4.Enabled = false;//不显示下一页
                this.LinkButton5.Enabled = false;//不显示最后一页
            }
            this.Label2.Text = Convert.ToString(ps.PageCount);
            this.DataList1.DataSource = ps;
            this.DataList1.DataKeyField = "id";
            this.DataList1.DataBind();
        }
      
        protected void LinkButton2_Click(object sender, EventArgs e)  //第一页
        {
            this.Label7.Text = "1";   //Label7.Text为当前页
            this.dlBind();
        }
        protected void LinkButton3_Click(object sender, EventArgs e) //上一页
        {
            this.Label7.Text = Convert.ToString(Convert.ToInt32(this.Label7.Text) - 1);
            this.dlBind();
        }
        protected void LinkButton4_Click(object sender, EventArgs e)  //下一页
        {
            this.Label7.Text = Convert.ToString(Convert.ToInt32(this.Label7.Text) + 1);
            this.dlBind();
        }
        protected void LinkButton5_Click(object sender, EventArgs e)  //最后一页
        {
            this.Label7.Text = this.Label2.Text; //Label2.Text为总页数
            this.dlBind();
        }
        DataSet bind()
        {
            DataSet ds = new DataSet();
            DataTable dt = new DataTable();
            DataRow dr;
            dt.Columns.Add(new DataColumn("id", typeof(Int32)));
            dt.Columns.Add(new DataColumn("title", typeof(String)));
            for (int i = 0; i < 100; i++)
            {
                dr = dt.NewRow();
                dr[0] = i;
                dr[1] = "分页测试数据... " + i.ToString();
                dt.Rows.Add(dr);
            }
            ds.Tables.Add(dt);
            return ds;
        }}
      

  4.   

    索引问题,调试看看数据
    public static PagedDataSource pds = new PagedDataSource();    protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                pds.AllowPaging = true;
                 pds.CurrentPageIndex = 0;
                pds.PageSize = 4;
            }        RefreshStatus();
        }
        private void RefreshStatus()
        {
            pds.DataSource = AdminManager.GetAllAdmins();
            DataList1.DataSource = pds;
            DataList1.DataBind();
            btnFirst.Enabled = !pds.IsFirstPage;
             btnPrevious.Enabled = !pds.IsFirstPage;
             btnNext.Enabled = !pds.IsLastPage;
            btnLast.Enabled = !pds.IsLastPage;
            lblPageIndex.Text = Convert.ToString(pds.CurrentPageIndex + 1);
            lblPageCount.Text = pds.PageCount.ToString();
        }
    参考
    参考