前台:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="temp.aspx.cs" Inherits="bms._temp" %>
<!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:Label ID="lbl" runat="server"></asp:Label><br>
    <asp:linkbutton id="btnFirst" onclick="PagerButtonClick" runat="server" CommandArgument="1"></asp:linkbutton>
    <asp:linkbutton id="btnPrev" onclick="PagerButtonClick" runat="server" CommandArgument="prev"></asp:linkbutton>
    <asp:linkbutton id="btnNext" onclick="PagerButtonClick" runat="server" CommandArgument="next"></asp:linkbutton>
    <asp:linkbutton id="btnLast" onclick="PagerButtonClick" runat="server" CommandArgument="last"></asp:linkbutton>
    </form>
</body>
</html>后台:
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;
namespace bms
{    public partial class _temp :System.Web.UI.Page
    {
        int destpage;
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
          { 
            ViewState["PageIndex"] =1;
            btnFirst.Text = "<首页>";
            btnPrev.Text = "<上一页>";
            btnNext.Text = "<下一页>";
            btnLast.Text = "<末页>";
           }
            destpage = Convert.ToInt16(ViewState["PageIndex"]);
            lbl.Text = destpage.ToString();
        }        protected void PagerButtonClick(object sender, EventArgs e)
        {
            string arg = ((LinkButton)sender).CommandArgument.ToString();
            switch (arg)
            {
                case "next":
                    if (destpage < 3)
                    {
                        destpage = destpage + 1;
                    }
                    break;
                case "prev":
                    if (destpage > 0)
                    {
                        destpage -= 1;
                    }
                    break;
                case "last":
                    destpage =3;
                    break;
                default:
                    destpage = System.Convert.ToInt16(arg);
                    break;
            }             ViewState["PageIndex"] = destpage;
        }    }
}难以理解啊,
为什么载入后点击“下一页”后,值不变,再点就变了,上面是简单的代码,请问我那里的逻辑出现错误?谢谢,

解决方案 »

  1.   

    绑定顺序不对
    你改变 ViewState["PageIndex"] 的值在 PAGELOAD里BIND之后执行的 而此刻并没有按照你的要求重新绑定  而是在下次回传才重绑仔细看MSDN有关 GRID系列的代码 很明确 很清楚的
      

  2.   

    using System;
    using System.Collections;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Web;
    using System.Web.SessionState;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.HtmlControls;
    using System.Data.SqlClient;
    using System.Text;namespace 自己做分页
    {
    public class WebForm1 : System.Web.UI.Page
    {
    private int PageCount;
    private int nRecCount;
    private int nPage;
    private void Page_Load(object sender, System.EventArgs e)
    {

    PageDisplay();
    }
    private void PageDisplay()
    {
    SqlConnection conn = new SqlConnection();
    SqlCommand cmd = new SqlCommand();
    SqlDataAdapter sda = new SqlDataAdapter();
    DataSet ds = new DataSet();
    DataTable dt = new DataTable(); conn.ConnectionString = "server=.;pwd=sa;uid=sa;database=Northwind";
    cmd.Connection = conn;
    cmd.CommandText = "select OrderId,EmployeeID,OrderDate,RequiredDate,ShippedDate from orders";
    sda.SelectCommand = cmd;
    sda.Fill(ds,"Em");
    dt = ds.Tables[0];
    nRecCount = dt.Rows.Count;
    StringBuilder sb = new StringBuilder(""); if(nRecCount > 0)
    {
    PageCount = nRecCount / 10;
    if(nRecCount / 10 > 0)
    {
    PageCount++;
    }
    if(this.Request.QueryString["page"] == null)
    {
    nPage = 1;
    }
    else
    {

    this.nPage = int.Parse(this.Request.QueryString["page"]);

    }if(this.nPage < 1)
    {
    nPage = 1;
    }
    if(this.nPage > this.PageCount)
    {
    this.nPage = this.PageCount;
    } if(nPage == 1)
    {
    sb.Append("<a href='WebForm1.aspx?page=1'>首页</a>")
    .Append("<a href='WebForm1.aspx?page=")
    .Append(nPage + 1)
    .Append("'>下一页</a>")
    .Append("<a href='WebForm1.aspx?page=")
    .Append(PageCount)
    .Append("'>尾页</a>")
    .Append("&nbsp;&nbsp;&nbsp;&nbsp;页次:")
    .Append(nPage.ToString())
    .Append("/")
    .Append(PageCount.ToString())
    .Append("<br>");
    }
    else 
    if(nPage == PageCount)
    {
    sb.Append("<a href='WebForm1.aspx?page=1'>首页</a>")
    .Append("<a href='WebForm1.aspx?page=")
    .Append(nPage - 1)
    .Append("'>上一页</a>")
    .Append("<a href='WebForm1.aspx?page=")
    .Append(PageCount)
    .Append("'>尾页</a>")
    .Append("&nbsp;&nbsp;&nbsp;&nbsp;页次:")
    .Append(nPage.ToString())
    .Append("/")
    .Append(PageCount.ToString())
    .Append("<br>");
    }
    else
    {
    sb.Append("<a href='WebForm1.aspx?page=1'>首页</a>")
    .Append("<a href='WebForm1.aspx?page=")
    .Append(nPage - 1)
    .Append("'>上一页</a>")
    .Append("<a href='WebForm1.aspx?page=")
    .Append(nPage + 1)
    .Append("'>下一页</a>")
    .Append("<a href='WebForm1.aspx?page=")
    .Append(PageCount)
    .Append("'>尾页</a>")
    .Append("&nbsp;&nbsp;&nbsp;&nbsp;页次:")
    .Append(nPage.ToString())
    .Append("/")
    .Append(PageCount.ToString())
    .Append("<br>");
    }
    this.Response.Write(sb); int Start = 10 * (nPage -1);
    int End = Start + 10 -1;
    if(End > nRecCount -1 )
    {
    End = nRecCount -1;
    }
    this.Response.Write("<table border ='1' cellpadding = '0' cellspaceing = '0' style = 'bordercollapse:collapse'bordercolor ='#111111' bgcolor = '#ffffff'><tr>");
    this.Response.Write("<td>OrderId</td><td>EmployeeID</td><td>OrderDate</td><td>RequireDate</td><td>ShippedDate</td></tr>"); sb.Remove(0,sb.Length); for(int i = Start; i <= End; i++)
    {
    sb.Append("<tr>");
    for(int j = 0;j < 5;j++)
    {
    sb.Append("<td>" + dt.Rows[i][j].ToString() + "</td>");
    }
    sb.Append("</tr>");
    }
    sb.Append("</table>");
    this.Response.Write(sb);
    }
    conn.Close();
    } #region Web 窗体设计器生成的代码
    override protected void OnInit(EventArgs e)
    {
    //
    // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
    //
    InitializeComponent();
    base.OnInit(e);
    }

    /// <summary>
    /// 设计器支持所需的方法 - 不要使用代码编辑器修改
    /// 此方法的内容。
    /// </summary>
    private void InitializeComponent()
    {    
    this.Load += new System.EventHandler(this.Page_Load);
    }
    #endregion
    }
    }
      

  3.   

    什么意思?
    这个问题搞我好几天了啊,我这相当于自定义分页
    关于datagrid的分页,我会的,只是这个我很不理解,
    要不你帮我改动一下,我就清楚了~~
      

  4.   

    to:fengyecsdn(虔诚) 
    你看我应该在什么地方改呢?
    wangzhaoli1982(做事最怕认真二字(求职:34392891)) 
    你这个太长了~~用处不大
      

  5.   

    ViewState["PageIndex"] =1;初始值应该项为0 ViewState["PageIndex"] =0;