asp.net - How to get text value from Control.Controls(i) - VB.Net -


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