1

onclick がポストバックなしでテキストボックスを動的に作成するボタンが欲しいです。更新パネルを使用して実行しようとしていましたが、今まではできませんでした。ボタンのクリックでは何も作成されません。以下は私が使用したコードです:

 <asp:PlaceHolder ID="textboxes" runat="server"/>

     <asp:ScriptManager ID="scriptMgr" runat="server" />
                <asp:UpdatePanel ID="updatePnl" runat="server">
                    <ContentTemplate>
                        <div>
                            <asp:Button id="Button" text="Add Destination" OnClick="btnCreate_Click" runat="server"/>
                        </div>
                    </ContentTemplate>
                </asp:UpdatePanel>

コードビハインド

  protected void btnCreate_Click(object sender, EventArgs e)
        {
             textboxes.Controls.Add(new TextBox() { ID = "txt" + 1 });

        }

これは私がaler(container);で得たものです:

ここに画像の説明を入力

4

3 に答える 3

2

これをボタン クリック イベント内で使用します。

    TextBox t = new TextBox();
    t.ID = "txt";
    this.form1.Controls.Add(t);

これを使用して、必要な数のテキストボックスを追加できます..しかし、ポストバックが発生すると、それらを管理するのが難しくなります.動的コントロールとポストバックの詳細については、以下のリンクを参照してください..

1.動的 Web サーバー コントロールとビュー ステート

2.動的 Web コントロール、ポストバック、およびビュー ステート

于 2013-03-11T10:16:44.007 に答える
2

ポストバックなしでテキストボックスを作成するには、OnClientClick を使用する必要があります

<asp:Button id="Button" text="Add Destination" OnClientClick="return CreateTxt(); runat="server"/>

<script type="text/javascript">


function CreateTxt()
{
    var container = document.getElementById("myContainerDiv");
    var html = document.getElementById('myContainerDiv').innerHTML;
    html = html + "<input type=text ... /><br />";
    container.innerHTML= html;
   return false;
}

</script>

myContainerDiv は、テキスト ボックスを追加する div の名前です。

于 2013-03-11T10:13:42.790 に答える
0

Javascript では、このように使用できると思います。これがお役に立てば幸いです...

var element = document.createElement("jsTextBox"); 

    //要素に異なる属性を割り当てます。

    element.setAttribute("value", "text");
<SpanElement>.appendChild(element);
于 2013-03-11T11:04:46.533 に答える