Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

GridView must be placed inside a form tag with runat="server" even after the GridView is within a form tag

Tags:

c#

.net

asp.net

<form runat="server" id="f1">     <div runat="server" id="d">         grid view:         <asp:GridView runat="server" ID="g">         </asp:GridView>     </div>      <asp:TextBox runat="server" ID="t" TextMode="MultiLine" Rows="20" Columns="50"></asp:TextBox> </form> 

Code behind:

public partial class ScriptTest : System.Web.UI.Page {     protected void Page_Load(object sender, EventArgs e)     {         g.DataSource = new string[] { "a", "b", "c" };         g.DataBind();          TextWriter tw = new StringWriter();         HtmlTextWriter h = new HtmlTextWriter(tw);             d.RenderControl(h);         t.Text = tw.ToString();     } } 

Even the GridView is within a from tag with runat="server", still I am getting this error.

Any clues please ?

like image 574
teenup Avatar asked Jun 14 '11 12:06

teenup


1 Answers

You are calling GridView.RenderControl(htmlTextWriter), hence the page raises an exception that a Server-Control was rendered outside of a Form.

You could avoid this execption by overriding VerifyRenderingInServerForm

public override void VerifyRenderingInServerForm(Control control) {   /* Confirms that an HtmlForm control is rendered for the specified ASP.NET      server control at run time. */ } 

See here and here.

like image 65
Tim Schmelter Avatar answered Sep 21 '22 07:09

Tim Schmelter