···怎样解决通过session处理分页和搜索后出现的问题···

bertieone bertieone 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区


这是一段分页程序,在分页按钮中,因为我是用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();
}
//最后一页----------------------------
}
...全文

相关推荐

评论 13
收藏 已收藏
分享
返回顶部
bertieone
.NET社区 62,274 成员 668,968 内容