c# - Gridview keep search while paging -


i have textbox write word search in gridview. research works first page of gridview, when go page research resets.

here code :

using system; using system.data; using system.configuration; using system.text.regularexpressions; using system.web; using system.text; using system.web.security; using system.web.ui; using system.web.ui.webcontrols; using system.web.ui.webcontrols.webparts; using system.web.ui.htmlcontrols; using system.data.sqlclient; using system.collections; using system.collections.generic; using system.io.compression; using system.io;   public partial class _default : page {      protected void page_load(object sender, eventargs e)     {         if (!ispostback)         {             this.binddata();         }     }       private void binddata()     {         string query = "select * ressources";         sqlcommand cmd = new sqlcommand(query);         gridview1.datasource = getdata(cmd);         gridview1.databind();           }       private datatable getdata(sqlcommand cmd)     {         string strconnstring = configurationmanager.connectionstrings["defaultconnection"].connectionstring;         using (sqlconnection con = new sqlconnection(strconnstring))         {             using (sqldataadapter sda = new sqldataadapter())             {                 cmd.connection = con;                 sda.selectcommand = cmd;                 using (datatable dt = new datatable())                 {                     sda.fill(dt);                     return dt;                 }             }         }     }       protected void editcustomer(object sender, gridviewediteventargs e)     {         gridview1.editindex = e.neweditindex;         this.binddata();     }       protected void canceledit(object sender, gridviewcancelediteventargs e)     {         gridview1.editindex = -1;         binddata();      }      protected void gridview1_pageindexchanging(object sender, gridviewpageeventargs e)     {         gridview1.pageindex = e.newpageindex;         binddata();     }       private void binddata(string query)     {         string connectionstring = configurationmanager.connectionstrings["defaultconnection"].connectionstring;         using (sqlconnection conn = new sqlconnection(connectionstring))         {             conn.open();             using (sqlcommand comm = new sqlcommand(query + ";select * ressources", conn))             {                 sqldataadapter da = new sqldataadapter(comm);                 dataset ds = new dataset();                 da.fill(ds);                 gridview1.datasource = ds;                 gridview1.databind();             }         }     }       protected void rowupdating(object sender, gridviewupdateeventargs e)     {         ...     }      protected void gridview1_rowdatabound(object sender, gridviewroweventargs e)     {         if (gridview1.editindex >= 0)             return;          if ((e.row.rowstate == datacontrolrowstate.normal || e.row.rowstate == datacontrolrowstate.alternate) &&         (e.row.rowtype == datacontrolrowtype.datarow || e.row.rowtype == datacontrolrowtype.header))         {             e.row.cells[3].visible = false;             e.row.cells[4].visible = false;             e.row.cells[6].visible = false;             e.row.cells[7].visible = false;             e.row.cells[8].visible = false;             e.row.cells[10].visible = false;             e.row.cells[14].visible = false;             e.row.cells[15].visible = false;         }     }      protected void gridview1_rowdeleting(object sender, gridviewdeleteeventargs e)     {         ...     }       private void addnewrecord(string url, string type_source, string first_date, string data, string crawler_subcategory)     {         ...     }      protected void button1_click(object sender, eventargs e)     {         ...     }      public void btnsearch_click(object sender, eventargs e)     {         string query = "select * ressources data like'%" + txtsearch.text + "%'";         sqlcommand cmd = new sqlcommand(query);         gridview1.datasource = getdata(cmd);         gridview1.databind();     }  } 

the function used search word named btnsearch_click().

i appreciate help.

thank !

i use dataview , rowfilter. choose cache originaldatatable in sessionvariable.

public partial class webform1 : system.web.ui.page {     // hold original datatable database     system.data.datatable originaldatatable = null;       protected void page_load(object sender, eventargs e)     {         if (!ispostback)             bindgridview("");     }      void bindgridview(string searchquery )     {          gridview1.datasource = getselectionresult(searchquery);         gridview1.databind();       }      private void initialdata()     {         string connectionstring = system.configuration.configurationmanager.connectionstrings["defaultconnection"].connectionstring;         string query = "select * ressources";          originaldatatable = new datatable();           using (sqldataadapter dataadapter = new sqldataadapter(query, connectionstring))         {             dataadapter.fill(originaldatatable);          }      }       dataview getselectionresult(string searchparam)     {         if (originaldatatable == null)             initialdata();          if (string.isnullorempty(searchparam))             return originaldatatable.defaultview;          string rowfilter = string.format("data '%{0}%'", searchparam);         return new dataview(originaldatatable, rowfilter, "data", dataviewrowstate.originalrows);       }      protected void button1_click(object sender, eventargs e)     {         bindgridview(textbox1.text);      }      protected void gridview1_pageindexchanged(object sender, eventargs e)     {         //...     }      protected void gridview1_pageindexchanging(object sender, gridviewpageeventargs e)     {         gridview1.pageindex = e.newpageindex;         bindgridview(textbox1.text);      }  } 

in case of caching datatable sessionvariable:

private void initialdata() {     string connectionstring = system.configuration.configurationmanager.connectionstrings["defaultconnection"].connectionstring;     string query = "select * ressources";      if (session["datatableinsession"] == null)     {                 originaldatatable = new datatable();         using (sqldataadapter dataadapter = new sqldataadapter(query, connectionstring))         {             dataadapter.fill(originaldatatable);         }     }     else     {         originaldatatable = session["datatableinsession"] datatable;     }  } 

regards.


Comments

Popular posts from this blog

basic authentication with http post params android -

vb.net - Virtual Keyboard commands -

css - Firefox for ubuntu renders wrong colors -