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
Post a Comment