teenup teenup - 1 month ago 8x
ASP.NET (C#) Question

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

<form runat="server" id="f1">
<div runat="server" id="d">
grid view:
<asp:GridView runat="server" ID="g">

<asp:TextBox runat="server" ID="t" TextMode="MultiLine" Rows="20" Columns="50"></asp:TextBox>

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" };

TextWriter tw = new StringWriter();
HtmlTextWriter h = new HtmlTextWriter(tw);
t.Text = tw.ToString();

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

Any clues please ?


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.