c# - Control 'testGridview' of type 'SPGridView' must be placed inside a form tag with runat=server -
i have spgridview , want export content pdf. using itextsharp same. error encountered @ rendercontrol call. have tried solutions mentioned in below thread. question have tried using
public override void verifyrenderinginserverform(control control) { return; } but doesnot work beacuse writing code in usercontrol. here ascx code.
<sharepoint:spgridview id="domaingridview" allowpaging="false" runat="server" autogeneratecolumns="false" showheader="true" showheaderwhenempty="true" allowsorting="true" gridlines="none" enabledeventvalidation="false"> <alternatingrowstyle cssclass="ms-alternating" /> <columns> <sharepoint:spboundfield datafield = "sitename" headertext = "team site name" sortexpression = "sitename"></sharepoint:spboundfield> <asp:boundfield datafield = "siteurl" htmlencode="false" headertext = "team site url" sortexpression = "siteurl" ></asp:boundfield> </columns> </sharepoint:spgridview> <asp:button id="btnexport" runat="server" text="export" onclick="btnexport_click" /> this usercontrol.ascx.cs code
protected void btnexport_click(object sender, eventargs e) { stringwriter sw = new stringwriter(); htmltextwriter hw = new htmltextwriter(sw); usercontrol mycontrol = (usercontrol)loadcontrol("domainuserwebpartusercontrol.ascx"); domaingridview.rendercontrol(hw); response.contenttype = "application/pdf"; response.addheader("content-disposition", "attachment;filename=datatable.pdf"); response.cache.setcacheability(httpcacheability.nocache); stringreader sr = new stringreader(sw.tostring()); document pdfdoc = new document(pagesize.a4, 10f, 10f, 10f, 0f); htmlworker htmlparser = new htmlworker(pdfdoc); pdfwriter.getinstance(pdfdoc, response.outputstream); pdfdoc.open(); htmlparser.parse(sr); pdfdoc.close(); response.write(pdfdoc); response.end(); } this exception getting
control 'ctl00_m_g_70a6af81_243a_45cf_a88e_3760d013ca12_ctl00_domaingridview' of type 'spgridview' must placed inside form tag runat=server.
finally got solution. using different approach alltogether.
protected void btnexport_click(object sender, eventargs e) { dtuiexport = getdata(); //creating itextsharp table datatable data pdfptable pdftable = new pdfptable(dtuiexport.columns.count - 1); pdftable.defaultcell.borderwidth = 2; int[] widths = new int[dtuiexport.columns.count - 1]; //setting font basefont bf = basefont.createfont(environment.getenvironmentvariable("windir") + @"\fonts\arialuni.ttf", basefont.identity_h, true); //setting width (int x = 0; x < domaingridview.columns.count -1; x++) { widths[x] = (int)domaingridview.columns[x].headertext.length + 100; } pdftable.setwidths(widths); //setting headers (int = 0; < dtuiexport.columns.count; i++) { if (i == 1) { continue; } itextsharp.text.font font = new itextsharp.text.font(bf, 10, itextsharp.text.font.normal); font.color = new basecolor(domaingridview.headerstyle.forecolor); string celltext = server.htmldecode(dtuiexport.columns[i].tostring()); itextsharp.text.pdf.pdfpcell cell = new pdfpcell(new phrase(12, celltext, font)); pdftable.addcell(cell); } //copying data pdftable (int = 0; < dtuiexport.rows.count; i++) { (int j = 0; j < dtuiexport.columns.count; j++) { if (j == 1) { continue; } string celltext = server.htmldecode(dtuiexport.rows[i][j].tostring()); itextsharp.text.font font = new itextsharp.text.font(bf, 10, itextsharp.text.font.normal); font.color = new basecolor(domaingridview.rowstyle.forecolor); itextsharp.text.pdf.pdfpcell cell = new itextsharp.text.pdf.pdfpcell(new phrase(12, celltext, font)); pdftable.addcell(cell); } } //creating pdf doc document pdfdoc = new document(pagesize.a2, 10f, 10f, 10f, 0f); pdfwriter.getinstance(pdfdoc, response.outputstream); pdfdoc.open(); pdfdoc.add(pdftable); pdfdoc.close(); response.contenttype = "application/pdf"; response.addheader("content-disposition", "attachment;filename=gridviewexport.pdf"); response.cache.setcacheability(httpcacheability.nocache); response.write(pdftable); response.end(); } }
Comments
Post a Comment