前台:
<%@ 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;
} }
}难以理解啊,
为什么载入后点击“下一页”后,值不变,再点就变了,上面是简单的代码,请问我那里的逻辑出现错误?谢谢,
<%@ 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;
} }
}难以理解啊,
为什么载入后点击“下一页”后,值不变,再点就变了,上面是简单的代码,请问我那里的逻辑出现错误?谢谢,
你改变 ViewState["PageIndex"] 的值在 PAGELOAD里BIND之后执行的 而此刻并没有按照你的要求重新绑定 而是在下次回传才重绑仔细看MSDN有关 GRID系列的代码 很明确 很清楚的
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(" 页次:")
.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(" 页次:")
.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(" 页次:")
.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
}
}
这个问题搞我好几天了啊,我这相当于自定义分页
关于datagrid的分页,我会的,只是这个我很不理解,
要不你帮我改动一下,我就清楚了~~
你看我应该在什么地方改呢?
wangzhaoli1982(做事最怕认真二字(求职:34392891))
你这个太长了~~用处不大