asp.net - C# add filter parameters and expression to listview dynamically -
i dynamically set filtering of listview based on textboxes since implicitly don't know number , names of collumns. i've made creating texboxes, setting filterparams , filterexpression in code behind - page loading , working without error after changing text in of textboxes listview not filtering. when debuging see filterexpression , filtercontrols exist attributes expect. can't see error , appriciate help. thanks!
on page_load have following code:
protected void page_load(object sender, eventargs e) { // code datatable listview // , put columns tablecols tablecols = dtable.columns; // creating of htmltablerow textboxes filtering htmltablerow htr_filterrow = new htmltablerow(); htr_filterrow.id = "filterrow"; foreach (datacolumn col in tablecols) { htmltablecell htc = new htmltablecell(); textbox tb = new textbox(); tb.id = "tb_" + col.columnname; htc.controls.add(tb); htr_filterrow.controls.add(htc); } placeholder_filterrow.controls.add(htr_filterrow); // setting filterparameters of listview if (sqldatasource1.filterparameters.count == 0) { foreach (datacolumn col in tablecols) { controlparameter filter_par = new controlparameter(); filter_par.name = col.columnname; filter_par.controlid = "listview1$tb_" + col.columnname + ""; filter_par.propertyname = "text"; sqldatasource1.filterparameters.add(filter_par); } } // setting filterexpression listview string filter_express = ""; int = 0; foreach (datacolumn col in tablecols) { if (filter_express.length == 0) { filter_express = filter_express + " ([" + col.columnname + "] '*{" + + "}*' or [" + col.columnname + "] null)"; } else filter_express = filter_express + " , ([" + col.columnname + "] '*{" + + "}*' or [" + col.columnname + "] null)"; = ++i; } sqldatasource1.filterexpression = filter_express; }
i have found solution. defaultvalue set filterparameters have missed. without defaultvalue approach works fine 1 filterparameter not many.
after change in code started work.
controlparameter search_par = new controlparameter(); search_par.name = "tb_search"; search_par.controlid = "tb_search"; search_par.propertyname = "text"; search_par.defaultvalue = "*"; sqldatasource1.filterparameters.add(search_par);
Comments
Post a Comment