···怎样解决通过session处理分页和搜索后出现的问题···
这是一段分页程序,在分页按钮中,因为我是用Redirect方法处理的,所以为了防止点击分页按钮以后回到默认页面,我就把搜索框textbox里的值写入session,这样可以在点击分页后仍然保存这个值,但现在我遇到问题是,当我搜索一个结果后,如果我通过点击ie后退按钮返回到首页,或者直接把网站地址后面的参数都删掉然后回车到首页,之后我再点刷新或者分页,他都会跳回之前的搜索结果页。
我知道这是用了session的结果。但我必须在代码改动不大的前提下解决这问题,要麻烦大家帮我看一下了
public partial class index : System.Web.UI.Page
{
SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["conn"].ConnectionString);
public int PageSize = 5;
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
if (Session["game"] != null)
{
SerchGame.Text = Session["game"].ToString();
}
if (Session["sn"] != null)
{
SerchSn.Text = Session["sn"].ToString();
}
if (Session["times"] != null)
{
SerchTimes.Text = Session["times"].ToString();
}
DefaultPage();
}
}
protected void btnserch_Click(object sender, EventArgs e) //搜索按钮代码开始
{
if (Session["sn"] != null)
{
Session.Remove("sn");
}
if (Session["game"] != null)
{
Session.Remove("game");
}
if (Session["times"] != null)
{
Session.Remove("times");
}
if (SerchGame.Text == null || SerchSn.Text != null || SerchTimes.Text == null)
{
Session["sn"] = SerchSn.Text;
}
if (SerchGame.Text != null || SerchSn.Text == null || SerchTimes.Text == null)
{
Session["game"] = SerchGame.Text;
}
if (SerchGame.Text == null || SerchSn.Text == null || SerchTimes.Text != null)
{
Session["times"] = SerchTimes.Text;
}
DefaultPage();
Response.Redirect("index.aspx?PageID=1");
} //搜索按钮代码结束
protected void DefaultPage() //分页方法开始
{
conn.Open();
string sql1;
if (SerchGame.Text == "" && SerchSn.Text == "" && SerchTimes.Text == "") //如果textbox内为空则执行默认sql,否则执行else
{
sql1 = "select count(*) from [order] ";
}
else
{
sql1 = "select count(*) from [order] where sn='" + Session["sn"] + "'or game='" + Session["game"] + "' or times='" + Session["times"] + "'";
}
SqlCommand cmd = new SqlCommand(sql1, conn);
int MaxSize = Convert.ToInt32(cmd.ExecuteScalar());
int Page = Convert.ToInt32(Request.QueryString.Get("PageID"));
if (Page == 0 || Request.Form["btnserch"]!=null)
{
Page = 1;
}
float temp = (float)MaxSize / PageSize;
if (Page >= Convert.ToInt32(Math.Ceiling(temp)))
{
Page = Convert.ToInt32(Math.Ceiling(temp));
}
string sql2;
if (SerchGame.Text == "" && SerchSn.Text == "" && SerchTimes.Text == "") //如果textbox内为空则执行默认sql,否则执行else
{
sql2 = "select count(*) from (select top " + PageSize * Page + " * from [order] ) as c";
}
else
{
sql2 = "select count(*) from (select top " + PageSize * Page + " * from [order] where sn='" + Session["sn"] + "'or game='" + Session["game"] + "' or times='" + Session["times"] + "') as c";
}
SqlCommand scmd1 = new SqlCommand(sql2, conn);
SqlDataReader sdr1 = scmd1.ExecuteReader();
sdr1.Read();
string cou = sdr1[0].ToString();
sdr1.Close();
int RowCount = Int32.Parse(cou) - PageSize * (Page - 1);
string SQL;
if (SerchGame.Text == "" && SerchSn.Text == "" && SerchTimes.Text == "") //如果textbox内为空则执行默认sql,否则执行else
{
SQL = "select * from (select top " + RowCount.ToString() + " * from (select top " + Page * PageSize + " * from [order] order by id DESC) as a order by a.id ) as b order by b.id DESC";
}
else
{
SQL = "select * from (select top " + RowCount.ToString() + " * from (select top " + Page * PageSize + " * from [order] where sn = '" + Session["sn"] + "' or game='" + Session["game"] + "' or times='" + Session["times"] + "' order by id DESC) as a order by a.id ) as b order by b.id DESC";
}
SqlDataAdapter sda = new SqlDataAdapter(SQL, conn);
DataSet ds = new DataSet();
sda.Fill(ds, "[order]");
DataTable dt = ds.Tables["[order]"];
conn.Close();
foreach (DataRow row in dt.Rows) //输出html表格
{
Response.Write("<table width=350 height=20 border=0 cellspacing=0 cellpadding=0><tr><td width=150><a href=orderdetail.aspx?id=" + row["id"] + ">" + (row["sn"]) + "</a></td><td width=150><a href=orderdetail.aspx?game=" + row["game"] + ">" + (row["game"]) + "</a></td><td width=150><a href=orderdetail.aspx?times=" + row["times"] + ">" + (row["times"]) + "</a></td></tr></table>");
}
conn.Close();
LblTitle.Text = "共有" + Convert.ToInt32(Math.Ceiling(temp)) + "页/当前是第" + Page + "页";
} //分页方法结束
//第一页--------------------------------------------------
protected void BtnFirst_Click(object sender, EventArgs e)
{
Response.Redirect("index.aspx?PageID=1");
}
//第一页--------------------------------------------------
//上一页-----------------------------------------------------
protected void BtnPre_Click(object sender, EventArgs e)
{
int Page = Convert.ToInt32(Request.QueryString.Get("PageID"));
if (Page <= 1)
{
Page = 2;
}
int curent = Page - 1;
Response.Redirect("index.aspx?PageID=" + curent);
}
//上一页-----------------------------------------------------
//下一页-----------------------------------------------------
protected void BtnNext_Click(object sender, EventArgs e)
{
conn.Open();
string sql;
if (SerchGame.Text == "" && SerchSn.Text == "" && SerchTimes.Text == "") //如果textbox内为空则执行默认sql,否则执行else
{
sql = "select count(*) from [order] ";
}
else
{
sql = "select count(*) from [order] where sn='" + Session["sn"] + "' or game='" + Session["game"] + "' or times='" + Session["times"] + "'";
}
SqlCommand cmd = new SqlCommand(sql, conn);
int MaxSize = Convert.ToInt32(cmd.ExecuteScalar());
int Page = Convert.ToInt32(Request.QueryString.Get("PageID"));
float temp = (float)MaxSize / PageSize;
if (Page >= Convert.ToInt32(Math.Ceiling(temp)))
{
Page = Convert.ToInt32(Math.Ceiling(temp)) - 1;
}
if (Page <= 0)
{
Page = 1;
}
int curent = Page + 1;
Response.Redirect("index.aspx?PageID=" + curent);
conn.Close();
}
//下一页---------------------------
//最后一页-------------------------
protected void BtnLast_Click(object sender, EventArgs e)
{
conn.Open();
string sql;
if (SerchGame.Text == "" && SerchSn.Text == "" && SerchTimes.Text == "") //如果textbox内为空则执行默认sql,否则执行else
{
sql = "select count(*) from [order] ";
}
else
{
sql = "select count(*) from [order] where sn='" + Session["sn"] + "' or game='" + Session["game"] + "' or times='" + Session["times"] + "'";
}
SqlCommand cmd = new SqlCommand(sql, conn);
int MaxSize = Convert.ToInt32(cmd.ExecuteScalar());
float temp = (float)MaxSize / PageSize;
Response.Redirect("index.aspx?PageID=" + Math.Ceiling(temp));
conn.Close();
}
//最后一页----------------------------
}
...全文
相关推荐
JS分页的实现(同步与异步)
主要介绍了JS分页的实现(同步与异步),需要的朋友可以参考下
mysql 分页优化解析
似乎讨论分页的人很少,难道大家都沉迷于limit m,n?在有索引的情况下,limit m,n速度足够,可是在复杂条件搜索时,where somthing order by somefield+somefieldmysql会搜遍数据库,找出“所有”符合条件的记录,然后取出m,n条记录。
商务网站建设教学教案—搜索功能制作.pdf
商务网站建设教学教案—搜索功能制作.pdf商务网站建设教学教案—搜索功能制作.pdf商务网站建设教学教案—搜索功能制作.pdf商务网站建设教学教案—搜索功能制作.pdf商务网站建设教学教案—搜索功能制作.pdf商务网站建设教学教案—搜索功能制作.pdf
JSP分页技术的实现
jsp分页技术的实现,在做列表,从数据库中读出数据,如果有大量的数据就需要分页技术
Nginx session丢失问题处理解决方法
主要介绍了Nginx session丢失问题处理解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧


