brief description of want : exporting data gridview excel, works fine, there columns hidden on gridview, not hidden in extract(used code found while doing research). want compare column names control text value know 1 not include in header being exported. hope makes sense. here code :
dim sgv gridview = ctype(contentplaceholder_body.findcontrol("summarygridview"), gridview) sgv.allowpaging = false sgv.databind() sexportfilename = path.getfilename(request.physicalpath) sexportfilename = sexportfilename.substring(0, sexportfilename.length - 5) & ".xls" export(sexportfilename, sgv) public shared sub export(byval filename string, byval gv gridview) httpcontext.current.response.clear() httpcontext.current.response.addheader("content-disposition", string.format("attachment; filename={0}", filename)) httpcontext.current.response.contenttype = "application/ms-excel" dim sw stringwriter = new stringwriter dim htw htmltextwriter = new htmltextwriter(sw) dim headername dim srowdata string = "" ' create form contain grid dim table table = new table table.gridlines = gv.gridlines ' add header row table if (not (gv.headerrow) nothing) preparecontrolforexport(gv.headerrow, gv) table.rows.add(gv.headerrow) end if ' add each of data rows table each row gridviewrow in gv.rows preparecontrolforexport(row) table.rows.add(row) next ' add footer row table if (not (gv.footerrow) nothing) preparecontrolforexport(gv.footerrow, gv) table.rows.add(gv.footerrow) end if ' render table htmlwriter table.rendercontrol(htw) ' render htmlwriter response httpcontext.current.response.write(sw.tostring) httpcontext.current.response.end() end sub ' replace of contained controls literals
private shared sub preparecontrolforexport(byval control control, byval gv gridview) dim integer = 0 while (i < control.controls.count) dim current control = control.controls(i) if (typeof current linkbutton) control.controls.remove(current) control.controls.addat(i, new literalcontrol(ctype(current, linkbutton).text)) elseif (typeof current imagebutton) control.controls.remove(current) control.controls.addat(i, new literalcontrol(ctype(current, imagebutton).alternatetext)) elseif (typeof current hyperlink) control.controls.remove(current) control.controls.addat(i, new literalcontrol(ctype(current, hyperlink).text)) elseif (typeof current dropdownlist) control.controls.remove(current) control.controls.addat(i, new literalcontrol(ctype(current, dropdownlist).selecteditem.text)) elseif (typeof current checkbox) control.controls.remove(current) control.controls.addat(i, new literalcontrol(ctype(current, checkbox).checked)) 'todo: warning!!!, inline if not supported ? elseif (typeof current datacontrolfieldheadercell) ''''''''''''so want here compare 'current' control text value gv.columns(k).headertext value - if match, remove
for k integer = 0 gv.rows.count - 1 if (current text value) = gv.columns(k).headertext if not gv.columns(k).visible control.controls.remove(current) control.controls.addat(i, new literalcontrol(ctype(current, datacontrolfieldheadercell).text)) end if end if next end if if current.hascontrols jsinternal_report_dateonlyrefined.preparecontrolforexport(current, gv) end if = (i + 1) loop end sub hope makes sense.
thanks in advance help.
found solution.
scenario : have master page export button exports data gridview on page using masterpage.
in page_load event of page gridview, used following code :
dim mymasterpage masterpagename = page.master dim exportbutton system.web.ui.webcontrols.button = mymasterpage.findcontrol("butexportexcel") if (exportbutton isnot nothing) addhandler exportbutton.click, addressof me.butexportexcel_click end if i created public sub:
private sub butexportexcel_click(byval sender object, byval e system.eventargs) dim smethod = "butexportexcel_click" dim serrormessage = "" dim sexportfilename string = "" try sexportfilename = path.getfilename(request.physicalpath) sexportfilename = sexportfilename.substring(0, sexportfilename.length - 5) & ".xls" response.clear() response.addheader("content-disposition", "attachment; filename=" & sexportfilename) response.contenttype = "application/vnd.xls" dim writeitem system.io.stringwriter = new system.io.stringwriter() dim htmltext system.web.ui.htmltextwriter = new htmltextwriter(writeitem) summarygridview.allowpaging = false 'dim dtsupplier datatable = ctype(viewstate("dtsupplier"), datatable) 'summarygridview.datasource = dtsupplier summarygridview.databind() summarygridview.rendercontrol(htmltext) response.write(writeitem.tostring()) response.end() catch ex exception end try end sub then adding below :
public overrides sub verifyrenderinginserverform(control control) end sub this unfortunately means needs go onto every page want gridview exported from, did job me. exports data in gridview.
i hope helps sitting same problem.
Comments
Post a Comment