AspNetPager控件做翻页,当从其他页返回到第一页时,出错,查询条件丢失,如何保存查询条件

taylermail 2013-06-03 01:04:22
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{


string 条件= " from info where 1=1";

if (Request.Form["id"] != "")
{........条件语句 }
else
{........条件语句 }
string sqlStr = "select count(distinct(id)) as all_num " + 条件+"";

if (Request.QueryString["page"] == null)
{
Session["sqlString"] = sqlString;
}
else
{
sqlString = Session["sqlString"].ToString();
}
SqlConnection conn = new SqlConnection(strCon); ; //新建数据库连接对象,其中s是上面的连接字符串

conn.Open(); //打开与数据库的连接
SqlCommand cmd = new SqlCommand(sqlStr, conn);
AspNetPager1.AlwaysShow = true;
AspNetPager1.PageSize = 2;
AspNetPager1.RecordCount = (int)cmd.ExecuteScalar();
conn.Close();
bind();

}

}
protected void AspNetPager1_PageChanged(object sender, EventArgs e)
{
bind();
}


//绑定


public void bind()
{
string 条件= " from info where 1=1";

if (Request.Form["id"] != "")
{........条件语句 }
else
{........条件语句 }
if (Request.QueryString["page"] == null)
{
Session["sqlString"] = sqlString;
}
else
{
sqlString = Session["sqlString"].ToString();
}

string sqlstr = "select * " + 条件+"";

sqlcon = new SqlConnection(strCon);

SqlDataAdapter myda = new SqlDataAdapter(sqlstr, sqlcon);

DataSet myds = new DataSet();

sqlcon.Open();


myda.Fill(myds, AspNetPager1.PageSize * (AspNetPager1.CurrentPageIndex - 1), AspNetPager1.PageSize, "myds");


GridView1.DataSource = myds.Tables["myds"];

GridView1.DataKeyNames = new string[] { "id" };
//主键
GridView1.DataBind();
sqlcon.Close();



}

}

...全文
283 26 打赏 收藏 转发到动态 举报
写回复
用AI写文章
26 条回复
切换为时间正序
请发表友善的回复…
发表回复
taylermail 2013-06-04
  • 打赏
  • 举报
回复
没有分页存储过程,能使用AspNetPager控件嘛? protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { string 条件= " from info where 1=1"; if (Request.Form["id"] != "") {........条件语句 } else {........条件语句 } if (Request.QueryString["page"] == null) { Session["条件"] = 条件; } else { 条件 = Session["条件"].ToString(); } string sqlStr = "select count(distinct(id)) as all_num " + 条件 + ""; SqlConnection conn = new SqlConnection(strCon); ; //新建数据库连接对象,其中s是上面的连接字符串 conn.Open(); //打开与数据库的连接 SqlCommand cmd = new SqlCommand(sqlStr, conn); AspNetPager1.AlwaysShow = true; AspNetPager1.PageSize = 2; AspNetPager1.RecordCount = (int)cmd.ExecuteScalar(); conn.Close(); bind(); } } protected void AspNetPager1_PageChanged(object sender, EventArgs e) { bind(); } //绑定 public void bind() { if (Request.QueryString["page"] == null) { Session["条件"] = 条件; } else { 条件 = Session["条件"].ToString(); } string sqlstr = "select * " + 条件+""; sqlcon = new SqlConnection(strCon); SqlDataAdapter myda = new SqlDataAdapter(sqlstr, sqlcon); DataSet myds = new DataSet(); sqlcon.Open(); myda.Fill(myds, AspNetPager1.PageSize * (AspNetPager1.CurrentPageIndex - 1), AspNetPager1.PageSize, "myds"); GridView1.DataSource = myds.Tables["myds"]; GridView1.DataKeyNames = new string[] { "id" }; //主键 GridView1.DataBind(); sqlcon.Close(); } }
Banianer 2013-06-04
  • 打赏
  • 举报
回复
AspNetPager分页不需要你去获取Page参数,它自己会获取,有分页事件。 if (Request.QueryString["page"] == null)         {             Session["sqlString"] = sqlString;         }         else         {             sqlString = Session["sqlString"].ToString();         } 不应该这样写 myda.Fill(myds, AspNetPager1.PageSize * (AspNetPager1.CurrentPageIndex - 1), AspNetPager1.PageSize, "myds" 你应该有个分页方法,或者分页存储过程。
清风晓月 2013-06-04
  • 打赏
  • 举报
回复
引用 21 楼 taylermail 的回复:
to u010948625 就是这个问题 该如何解决啊?
简单一点,这么写吧(下面是伪代码,仅供参考)。 Page_Load() { if(!IsPostBack) { Session["id"] = Request["id"];//将查询条件保存到session //其他代码... } } Bind() { string id = Session["id"].ToString(); //其他代码... }
taylermail 2013-06-04
  • 打赏
  • 举报
回复
存了查询条件 if (Request.QueryString["page"] == null) { Session["sqlString"] = sqlString; int page = 1; } else { sqlString = Session["sqlString"].ToString(); } 回到第一页执行了 Session["sqlString"] = sqlString; 所以出错
taylermail 2013-06-04
  • 打赏
  • 举报
回复
我用这个存了查询条件 但回到第一页就没得结果了 if (Request.QueryString["page"] == null) { Session["sqlString"] = sqlString; int page = 1; } else { sqlString = Session["sqlString"].ToString(); }
taylermail 2013-06-04
  • 打赏
  • 举报
回复
to u010948625 就是这个问题 该如何解决啊?
清风晓月 2013-06-04
  • 打赏
  • 举报
回复
楼主的bind()方法中,这个语句可能取不到id值,所以用这种方式就会丢失查询条件。 if (Request.Form["id"] != "") {........条件语句 } else {........条件语句 }
全栈极简 2013-06-04
  • 打赏
  • 举报
回复
可以用ViewState["condition"]=strCondition;//strCondition是查询条件,然后每次取ViewState["condition"]即可。
清风晓月 2013-06-04
  • 打赏
  • 举报
回复
页面首次加载时,可以把查询条件保存到Session、Cookie或者ViewState中,然后每次切换页码时再从中读取,并调用bind()方法即可。
persuit666 2013-06-04
  • 打赏
  • 举报
回复
是用的AspNetPager控件吗?怀疑
taylermail 2013-06-04
  • 打赏
  • 举报
回复
如何解决啊 ,在线等,各位大哥
taylermail 2013-06-04
  • 打赏
  • 举报
回复
TO zhoufeng0401 Compiler Error Message: CS0117: 'System.EventArgs' does not contain a definition for 'NewPageIndex' Source Error: Line 94: { Line 95: Line 96: AspNetPager1.CurrentPageIndex = e.NewPageIndex; Line 97: bind(); Line 98: }
persuit666 2013-06-04
  • 打赏
  • 举报
回复
protected void AspNetPager1_PageChanged(object sender, EventArgs e) { AspNetPager1.CurrentPageIndex = e.NewPageIndex;bind(); }
taylermail 2013-06-04
  • 打赏
  • 举报
回复
是这个页面啊 分页控件 共2条,第1页 /共2 页 首页 上一页1,2 下一页 尾页 然后点,2,3,4....之间没问题,当回到第一页就出现: 共0条,第1页 /共1 页 首页上一页1下一页 尾页
still_melody 2013-06-04
  • 打赏
  • 举报
回复
楼主说的其他页面是不是已经不是本页面了
taylermail 2013-06-04
  • 打赏
  • 举报
回复
不对 问题出在 当从其他页回到第一页时 失去查询条件。
朕赐你肥皂 2013-06-03
  • 打赏
  • 举报
回复
if(Request.QueryString["page"] ==null) { Page =1; }
taylermail 2013-06-03
  • 打赏
  • 举报
回复
是不是我绑定就有错误啊 ,大家给点建议,用的AspNetPager控件
taylermail 2013-06-03
  • 打赏
  • 举报
回复
to gaind : 'string' does not contain a definition for 'isNullOrEmpty'
朕赐你肥皂 2013-06-03
  • 打赏
  • 举报
回复
String Page =Request.QueryString["page"] ; if(String.isNullOrEmpty(Page)) { Page =1; }
加载更多回复(6)

62,041

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧