Добавить строку таблицы, как только текстовое поле не станет пустым ASP.NET / C#

В настоящее время у меня есть таблица с двумя строками. Каждая строка содержит флажок (кроме первого), содержит флажок в одном столбце, метку в следующем и текстовую область в третьем столбце.

В настоящее время у меня есть две проблемы, одна из них - кнопка "Добавить строку" добавит только одну строку (и если я нажму ее снова, она не добавит дополнительную строку). Я закомментировал поле идентификатора, подумав, что, возможно, именно поэтому оно не добавит еще одну строку (не хочу, чтобы два элемента совместно использовали и идентификатор), однако это было не так.

Другая вещь, которую я не знаю, как это сделать, - сделать так, чтобы эта функция автоматически вызывалась, как только я начну вводить текстовое поле "mcOpt1". В идеале я хочу, чтобы он добавил строку с текстовым полем с именем "mcOpt2", которая снова добавит еще одну строку, как только эта строка будет иметь текст / не будет пустой.

Я совершенно новичок в этих языках, так как же этого можно достичь, если вообще?

Стол:

   <asp:Table ID="mcOptTable" runat="server" CssClass="halfwide">
        <asp:TableRow runat="server" ID="question">
            <asp:TableCell runat="server"></asp:TableCell>
            <asp:TableCell runat="server">Question:</asp:TableCell>
            <asp:TableCell runat="server">
                <asp:TextBox ID="mcQuestion" runat="server" TextMode="MultiLine"></asp:TextBox>
            </asp:TableCell>
        </asp:TableRow>
        <asp:TableRow runat="server" ID="opt1">
            <asp:TableCell runat="server">
                <asp:CheckBox ID="mcOpt1IsCorrect" runat="server" CssClass="leftmargin10" />
            </asp:TableCell>
            <asp:TableCell runat="server">Option 1:</asp:TableCell>
            <asp:TableCell runat="server">
                <asp:TextBox ID="mcOpt1" runat="server" TextMode="MultiLine"></asp:TextBox>
            </asp:TableCell>
        </asp:TableRow>
    </asp:Table>

Кнопка

<asp:Button ID="addRow" runat="server" Text="Add a Row" OnClick="addRow_Click" />

C# Добавить код строки таблицы

protected void addRow_Click(object sender, EventArgs e)
{
    TableRow row = new TableRow();
    TableCell optText = new TableCell();
    TableCell tBox = new TableCell();
    TableCell isCor = new TableCell();
    optText.Text = "Option 2:";
    tBox.Text = "text box here";
    //tBox.ID = "opt2";
    isCor.Text = "?";
    //isCor.ID = "opt2IsCorrect";
    row.Cells.Add(isCor);
    row.Cells.Add(optText);
    row.Cells.Add(tBox);
    mcOptTable.Rows.Add(row);
}

1 ответ

Проблема в том, что вы не "помните" добавленные строки между постбеками. При первом добавлении строки (на стороне сервера) она отображается при обратной передаче. Однако в следующий раз, когда вы захотите добавить строку (на стороне сервера), предыдущей строки больше не будет, в основном потому, что таблица снова отображается в исходном состоянии.

Что вам нужно сделать, это "запомнить" добавленные вами строки и убедиться, что все они отображаются при каждой обратной передаче.

Другие вопросы по тегам