利用ASPNETPager支持URL分页的功能实现条件查询,翻页条件依然存在的效果,不使用viewstate,session之类的东西。
思路:
在条件查询按钮后台代码上进行页面的Redirect,URL为本列表页面的URL?param1=param1value¶m2=param2value...
因为ASPNETPager分页的时候是整个页面的重新刷新,条件不会保存,但是,如果加上上述的param之后,该控件分页的时候会自动的带上这些param。那么就可以在后台的代码中进行设置了并按照条件进行查询分页了。
具体实现代码:
重点代码:
查询按钮btnSearch
public partial class AreaList : PageBase
{
protected void Page_Load(object sender, EventArgs e)
{
if (!this.IsPostBack)
{
this.SearchData();
}
}
protected void Pager_PageChanged(object sender, EventArgs e)
{
if (!string.IsNullOrEmpty(Utils.getQueryValue("page")))
{
this.SearchData();
}
}
private void SearchData()
{
<strong>var list = DictionartFactory.GetList("AreaOperation").AsQueryable();
string name = Utils.getQueryValue("name");
if (string.IsNullOrEmpty(name))
{
name = this.txtAreaName.Text.CleanSQL();
}
else
{
this.txtAreaName.Text = name;
}
if (!string.IsNullOrEmpty(name))
{
list = list.Where(rt => rt.Value.Contains(name));
}</strong>
list = list.OrderBy(rt => rt.ID);
IQueryable<SQLDAL.DictionaryType> listPager = list;
listPager = list.Skip((this.Pager.CurrentPageIndex - 1) * this.Pager.PageSize).Take(Pager.PageSize);
this.Pager.RecordCount = list.Count();
this.rptAreaList.DataSource = listPager;
this.rptAreaList.DataBind();
}
<strong>protected void btnSearch_Click(object sender, EventArgs e)
{
this.Response.Redirect("arealist.aspx?name=" + this.txtAreaName.Text);
}</strong>
}