1

aspのコードビハインドでそれを行うときではなく、ユーザーがクリックしてテーブルに行を追加したいのですが、「addRowButton」をクリックすると、テーブルに追加できる行は1つだけです。そのため、Googleでこの問題を検索し、この問題を引き起こしているaspの「ViewState」に関する記事をいくつか見ましたが、「ViewState」を使用または変更してこの問題を解決する方法を理解できませんでした。

ASPページのテーブルのテンプレートは次のとおりです。

<table runat="server" ID="myTable">
<tr><td>
<asp:textbox runat="server" ID="txt1"></asp:textbox>
</td></tr>
</table>

そして、私はこのコードを使用して、特定のセルを含む行をテーブルに追加しています:

protected void AddNewRow(object sender, EventArgs e)
    { 
        HtmlTable tbl = (System.Web.UI.HtmlControls.HtmlTable)this.FindControl("myTable");
        HtmlTableCell cell = new HtmlTableCell();
        HtmlTableRow row = new HtmlTableRow();
        TextBox txt = new TextBox();
        txt.ID = "txtTest";
        cell.Controls.Add(txt);
        row.Controls.Add(cell);
        int rowNumber = tbl.Rows.Count;
        tbl.Controls.AddAt(rowNumber, row);
    }

助けてください

4

1 に答える 1

2

現在の行数を ViewState フィールドに格納する必要があります (ViewState現在の Page コンテキストのプロパティを使用します)。または、同じ情報を非表示フィールドに保存してから、ページのイベントAddNewRow中に ViewState がそう言っている回数だけ呼び出します。OnInit

ここにいくつかの疑似コードがあります:

During OnInit:
    Is this a postback? If so...
        Read the number of table-rows N from ViewState["RowCount"]
        For(I=0 to N) AddTableRow()

During AddRow_ClickHandler
    AddTableRow()
    ViewState["RowCount"]++
于 2012-11-13T10:42:39.793 に答える