文本框不为空时添加表行ASP.NET/C#
我现在有一个两行的表。每行包含一个复选框(第一列除外),在一列中包含一个复选框,在下一列中包含一个标签,在第三列中包含一个文本区域 我目前有两个问题,一个是我的“添加行”按钮将只添加一行(如果我再次单击它,它将不会添加额外的行)。我注释掉了ID字段,认为这可能是它不会添加另一行(不希望两个项目共享和ID)的原因,但事实并非如此 另一件我不知道该怎么做的事情是,一旦我开始在文本框“mcOpt1”中输入,就会自动调用这个函数。理想情况下,我希望它能添加一行名为“mcOpt2”的文本框,一旦该行有text/不为空,它就会再次添加另一行 我对这些语言还很陌生,所以如果真的有,如何实现这一点呢 表格:文本框不为空时添加表行ASP.NET/C#,c#,asp.net,htmltable-control,C#,Asp.net,Htmltable Control,我现在有一个两行的表。每行包含一个复选框(第一列除外),在一列中包含一个复选框,在下一列中包含一个标签,在第三列中包含一个文本区域 我目前有两个问题,一个是我的“添加行”按钮将只添加一行(如果我再次单击它,它将不会添加额外的行)。我注释掉了ID字段,认为这可能是它不会添加另一行(不希望两个项目共享和ID)的原因,但事实并非如此 另一件我不知道该怎么做的事情是,一旦我开始在文本框“mcOpt1”中输入,就会自动调用这个函数。理想情况下,我希望它能添加一行名为“mcOpt2”的文本框,一旦该行有te
<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.net的无状态性质(链接问题中有更多详细信息),上一行正在被销毁。如果将
“此处文本框”
更改为String.Format(“此处文本框{0}”,DateTime.Now)
,您可以更容易地看到这一点。
<asp:Button ID="addRow" runat="server" Text="Add a Row" OnClick="addRow_Click" />
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);
}