Добавить строку динамически в таблицу в ASP.NET? - PullRequest
2 голосов
/ 23 декабря 2009

Я пытаюсь динамически добавлять строки в элемент управления System.Web.UI.WebControls.Table в ASP.NET. Я нашел пример кода , который делает то, что я ищу, но он добавляет только одну строку.

Кажется, что количество строк в таблице не переносится с одной загрузки страницы на другую. Пользователь должен иметь возможность добавлять столько строк, сколько нужно, и мне нужно собирать данные из каждой строки.

Чего мне не хватает? Код ниже.

<%@ Page Language="VB" %>
<script runat="server">

    Sub btnAddEmail_Click(ByVal Sender As Object, ByVal e As EventArgs)

        Dim tr As New TableRow
        Dim tcLabel As New TableCell
        Dim tcTextBox As New TableCell
        Dim newLabel As New Label
        Dim newTextBox As New TextBox

        Dim i As Integer = Table1.Rows.Count + 1

        newLabel.ID = "Email" + Convert.ToString(i)
        newLabel.Text = "Email" + Convert.ToString(i)

        newTextBox.ID = "txtEmail" + Convert.ToString(i)

        tcLabel.Controls.Add(newLabel)
        tcTextBox.Controls.Add(newTextBox)

        tr.Cells.Add(tcLabel)
        tr.Cells.Add(tcTextBox)

        Table1.Rows.Add(tr)

    End Sub

</script>

<form id="form1" runat="server">
<div>
    <asp:Button runat="server" Text="Add Email" ID="btnAddEmail"
        onclick="btnAddEmail_Click" />
    <asp:Table ID="Table1" runat="server">
        <asp:TableRow>
            <asp:TableCell>
                <asp:Label ID="Email1" runat="server" Text="Email1"></asp:Label></asp:TableCell>
            <asp:TableCell>
                <asp:TextBox ID="txtEmail1" runat="server"></asp:TextBox></asp:TableCell>
        </asp:TableRow>
    </asp:Table>
</div>
</form>

1 Ответ

4 голосов
/ 23 декабря 2009

ASP.NET не имеет состояния - вам нужно сохранить любые данные между загрузками страниц в переменную Session.

Вам нужно будет сохранить DataTable / DataSet в переменной сеанса и назначить свойство Datasource таблицы Table1 этому DataSet в вашем событии «PageLoad». Затем в своем событии «Click» добавьте строку в DataSet в переменной Session.

обновление

Возможно, вы сможете установить ViewState="true" на элементе управления, для которого вы хотите сохранить постоянные данные с помощью обратных передач.

...