2

現在、2行のテーブルがあります。各行にはチェックボックスが含まれています (最初の列を除く) には、1 つの列にチェックボックス、次の列にラベル、3 番目の列にテキスト領域が含まれます。

現在、2 つの問題があります。1 つは、[行の追加] ボタンで 1 行しか追加されないことです (もう一度クリックしても、行が追加されません)。別の行を追加しない理由かもしれないと考えてIDフィールドをコメントアウトしました(2つのアイテムとIDを共有したくない)が、そうではありませんでした.

私が行う方法がわからないもう1つのことは、テキストボックス「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# Add テーブル行コード

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);
}
4

1 に答える 1

0

問題は、ポストバックの間に追加された行を「覚えていない」ことです。初めて行を追加すると (サーバー側)、ポストバックでレンダリングされます。ただし、次に行 (サーバー側) を追加する場合、基本的にテーブルが元の状態で再びレンダリングされるため、前の行はもうありません。

必要なことは、追加した行を「記憶」し、ポストバックごとにすべての行がレンダリングされるようにすることです。

于 2014-10-12T11:57:28.243 に答える