1. ホーム
  2. c#

[解決済み] GridViewがformタグの中にあってもrunat="server "でformタグの中に置かなければならない。

2023-03-23 12:40:59

質問

<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>

後ろのコード

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();
    }
}

GridViewがrunat="server"でfromタグ内にある場合でも、このエラーが発生します。

何か手がかりがあれば教えてください。

どのように解決するのですか?

あなたは GridView.RenderControl(htmlTextWriter) を呼び出しているため、サーバーコントロールがフォームの外部でレンダリングされたという例外が発生します。

をオーバーライドすることで、この実行を回避することができます。 VerifyRenderingInServerForm

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

参照 を参照してください。 はこちら .