1

ボタンクリックの背後にあるコードを介して動的にテキストボックスが追加され、正常に機能しています。別のボタンをクリックして、動的に追加されたすべてのテキストボックスの値を取得します。しかし、テキストボックスの値は空です。ポストバックで動的に追加されたテキストボックスの値を保持するにはどうすればよいですか?

Aspxコード

<asp:Table runat="server" id="placeAddTds">
  <asp:TableRow>

    <asp:TableCell><asp:TextBox ID="txt_from" runat="server" class="sabsw" TabIndex="88"></asp:TextBox></asp:TableCell>
    <asp:TableCell><asp:TextBox ID="txt_to" runat="server" class="sabsw" TabIndex="89"></asp:TextBox></asp:TableCell>
    <asp:TableCell><asp:TextBox ID="txt_per" runat="server" class="sabsw" TabIndex="90"></asp:TextBox></asp:TableCell>

    <asp:TableCell>
    <asp:Button class="main-btn add-btn pointer" runat="server" ID="btn_add" Text="Add" OnClick="TdsAddClick" TabIndex="91"></asp:Button>
   </asp:TableCell>
  </asp:TableRow>
  </asp:Table>

背後にあるコード:

 protected void TdsAddClick(object sender,EventArgs e)
    {
        try
        {
            TextBox[] l1 = new TextBox[txtcount];
            TextBox[] l2 = new TextBox[txtcount];
            TextBox[] l3 = new TextBox[txtcount];
            for (int j = 1; j < txtcount; j++)
            {
                l1[j] = new TextBox();
                l2[j] = new TextBox();
                l3[j] = new TextBox();
                l1[j].ID = "txt_from" + j;
                l1[j].Attributes.Add("class","sabsw");
                l2[j].ID = "txt_to" + j;
                l2[j].Attributes.Add("class", "sabsw");
                l3[j].ID = "txt_per" + j;
                l3[j].Attributes.Add("class", "sabsw");
                placeAddTds.Rows.Add(new TableRow());
                placeAddTds.Rows[j].Cells.Add(new TableCell());
                placeAddTds.Rows[j].Cells[0].Controls.Add(l1[j]);
                placeAddTds.Rows[j].Cells.Add(new TableCell());
                placeAddTds.Rows[j].Cells[1].Controls.Add(l2[j]);
                placeAddTds.Rows[j].Cells.Add(new TableCell());
                placeAddTds.Rows[j].Cells[2].Controls.Add(l3[j]);
           }
            txtcount++;
        }
        catch (Exception ex)
        {
        }
    }

ありがとう、

4

2 に答える 2

1

これがあなたのコメントからの彼の要件であることを願っています.

私は2つのボタンを持っています。1 つのボタンをクリックすると、テキスト ボックスを動的に追加し、2 番目のボタンをクリックすると、すべてのテキスト ボックスの値をデータベースに保存したい

2 つのボタンがあります 1 つのボタンで、Jquery を使用して TextBox を作成できます。(クライアント側のスクリプトは、ポストバックと比較して非常に高速です)。

ここでは、Jquery を使用してテキスト ボックスを追加する方法を確認できます。

したがって、ポストバックなしでテキストボックスを動的に追加できます。

Jqueryを使用してフォームをシリアル化し、サーバーに送信できる別のボタン。

データをサーバー に渡す JSON オブジェクトを作成してサーバーに渡します。__doPostBack(control,args) を渡すことができます。args には、JSON 値を渡すことができます。 ここをクリック

JSON データを処理する

C# JSON カスタム シリアル化 JSON からデータを取得する方法を示します。

これは、クライアント側のスクリプトで実装できるアプローチであり、提案する方法よりもはるかに高速に機能する可能性があります。

ありがとう

于 2012-06-18T11:11:51.307 に答える
0

コード ビハインドでこのための ViewState を使用してプロパティを追加し、すべての値をリストに格納できます。

private List<string> TextBoxValue
        {
            get
            {
                return (List<string>)ViewState["TextBoxValue"];
            }
            set
            {
                ViewState["TextBoxValue"] = value;
            }
        }

その後、このプロパティにテキスト ボックスの値を格納できます。例:

TextBoxValue.Add(textBox1.Text);

ただし、これによりページが重くなります。

于 2012-06-18T10:08:06.017 に答える