1

以下のコードを参照してください。

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div id="Div1" runat="server" />
    <asp:Button ID="Button1" runat="server" Text="Create a TextBox" />
    <asp:Button ID="Button2" runat="server" Text="Erase TextBox Text" />
    </form>
</body>
</html>
..........................................
protected void Page_Load(object sender, EventArgs e)
    {
        if (IsPostBack)
        {
            if (Request.Params.ToString().IndexOf("Button1") > 0)
            {
                CreateTextBox();
            }
            else
            {
                if (Request.Params.ToString().IndexOf("Button2") > 0)
                {
                    TextBox txtbx = CreateTextBox();
                    txtbx.Text = "";
                }
            }
        }        
    }

    TextBox CreateTextBox()
    {
        TextBox txtbx = new TextBox();
        Div1.Controls.Add(txtbx);

        return txtbx;
    }

PostBackで、「Button1」または「Button2」が押されたかどうかを確認します。Button1

を押すと、TextBoxが動的に作成されます。 TextBoxにテキストを入力して、もう一度Button1を押します。TextBoxが再作成され、入力したテキストがPostBackに保持されます。Button2 を押すと、TextBoxを再作成したいのですが、以前に入力したテキストを削除したいと思います。ただし、txtbx.Text = ""を指定した場合でも、PostBack後もテキストは保持されます。 TextBoxを再作成し、入力したテキストを削除するにはどうすればよいですか?(Button1を押してもテキストは保持されますが、Button2を押してもテキストは保持されません)





ありがとうございました。

4

1 に答える 1

1

page load、コンテキストはまだ復元されていません。コントロールの状態値をオーバーライドする場合はClick、各ボタンのイベントを処理し、それに応じてロジックを実行します。

于 2012-11-08T19:40:05.963 に答える