日期:2014-05-18  浏览次数:20410 次

ASP.NET 关于url分页的疑问
实现url分页格式如:http://localhost/userlist.aspx?page=2

疑问:
如何存储查询语句????????
protected void Page_Load(object sender, EventArgs e)
{
  if (!IsPostBack)
  {
  string sql = "select * from users"; //一般在这里初始化查询语句

  使用url分页后,切换页码时,页面的if(!IsPostBack)总是成立,带条件查询的sql语句(如搜索数据后的sql语句)就会被重置为"select * from users"; ,而不是条件查询后的sql语句。
  如果使用Session保持sql语句,如果Session不失效的话,关闭页面、重新打开后,页面还是保留了上次搜索的数据,默认应该是全部数据select * from users。


问:如何解决以上问题

------解决方案--------------------
在!IsPostBack里面加一个判断
if(Request.QueryString["page"]!=null)
{
你的分页代码
}
else
{
string sql = "select * from users"; //一般在这里初始化查询语句
}
------解决方案--------------------
刚刚的帖子
------解决方案--------------------
探讨
引用:
在!IsPostBack里面加一个判断
if(Request.QueryString["page"]!=null)
{
你的分页代码
}
else
{
string sql = "select * from users"; //一般在这里初始化查询语句
}


if 成立,sql=null 下面带sql参数的方法不是出错了。。。

------解决方案--------------------
当然,重新Get方式访问一个页面,那么只有url可以传参数了,原来的状态也全都丢失了。你的页面上只有一个简单的数据列表吗?那么你的页面实在是太简单了。实际上好的应用程序,页面上不仅仅只有数据列表,还有许多其它的组件,所有的东西都需要保存用户操作过程中的状态。如果你选择重新定向到新的页面(而不是asp.net回发以及维系ViewState的机制),那么你就要自己处理这些状态丢失的全部问题。

如果追逐比较流行的编程,那么就可以完全使用ajax来处理交互,而从来不回发。否则,你就使用asp.net传统web form机制来编程。

至于Session集合,我要提醒你的是这是会话范畴的,而不是页面范畴的。会话和页面相信你可以分的清楚。如果你在仅仅需要控制页面范畴的数据时,使用了大的范畴,那么很快等你做复杂一点的程序就会遇到很多数据混乱情况。