title: DataList paging with search result
body: <p>i have a DataList to display tons of items, so i use paging and search method in order to filter and makes it easier, both are working fine. however, when it comes to paging after search, the data will back to (SELECT *) but not the specific item im searching for</p>
  
  <p>what i done so far:</p>
  
  <pre><code>    SqlDataAdapter adap;
      DataSet ds;
      PagedDataSource adsource;
      int pos;
  
  protected void Page_Load(object sender, EventArgs e)
      {
          if (!Page.IsPostBack)
          {
              this.ViewState["vs"] = 0;
              pos = (int)this.ViewState["vs"];
  
              databind();
              databind2();
          }
       }
  
  public void databind()
      {
          adap = new SqlDataAdapter("select p.item_code as pitem, i.LongDesc as longname, p.SellPrice_1 as normalprice, p.SellPrice_2 as memberprice from plu p inner join item i on p.item_code = i.item_code WHERE p.publish =1 order by i.LongDesc", constr);
          ds = new DataSet();
          adsource = new PagedDataSource();
          adap.Fill(ds);
          adsource.DataSource = ds.Tables[0].DefaultView;
          adsource.PageSize = 16;
          adsource.AllowPaging = true;
          adsource.CurrentPageIndex = pos;
          CategoryList.DataSource = adsource;
          CategoryList.DataBind();
      }
  </code></pre>
  
  <p>the filter part shows as below</p>
  
  <pre><code>public void Filter_Command(Object source, DataListCommandEventArgs e)
      {
          if (e.CommandName.Equals("Filter"))
          {
              adap = new SqlDataAdapter("select p.item_code as pitem, i.LongDesc as longname, p.SellPrice_1 as normalprice, p.SellPrice_2 as memberprice, d.department_code as dcode, d.category_code as dcatecode, c.category_code as ccode from plu p inner join item i on p.item_code = i.item_code inner join EPO_PDU_department d on d.department_code = i.department_code inner join EPO_PDU_Category c on c.category_code = d.category_code WHERE p.publish =1 AND c.category_code = '" + e.CommandArgument.ToString() + "'order by i.LongDesc  ", constr);
              ds = new DataSet();
              adsource = new PagedDataSource();
              adap.Fill(ds);
              adsource.DataSource = ds.Tables[0].DefaultView;
              adsource.PageSize = 16;
              adsource.AllowPaging = true;
              adsource.CurrentPageIndex = pos;
              btnprevious.Enabled = !adsource.IsFirstPage;
              btnnext.Enabled = !adsource.IsLastPage;
              CategoryList.DataSource = adsource;
              CategoryList.DataBind();
          }
      }
  </code></pre>
  
  <p>buttons that i used:</p>
  
  <pre><code>protected void btnprevious_Click(object sender, EventArgs e)
      {
          pos = (int)this.ViewState["vs"];
          pos -= 1;
          this.ViewState["vs"] = pos;
          databind();
      }
  
      protected void btnnext_Click(object sender, EventArgs e)
      {
          pos = (int)this.ViewState["vs"];
          pos += 1;
          this.ViewState["vs"] = pos;
          databind();
      }
  </code></pre>
  
  <p>searching and paging are working fine without each other. but i would like them to work together. thanks</p>
  
  <p>******* UPDATE *******</p>
  
  <p>in case Rik needs more information
  <a href="https://i.stack.imgur.com/Ok2Ur.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/Ok2Ur.png" alt="the errors occurred"></a></p>