ASPNETPager条件查询分页的实现

利用ASPNETPager支持URL分页的功能实现条件查询,翻页条件依然存在的效果,不使用viewstate,session之类的东西。

思路:


在条件查询按钮后台代码上进行页面的Redirect,URL为本列表页面的URL?param1=param1value&param2=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>
    }



猜你喜欢

转载自blog.csdn.net/chenpeggy/article/details/37814917
今日推荐