我无法决定如何解决此问题。
我有一个asp文本框,用户在其中输入数字,并使用jquery onkeyup生成带有ASP网络表输入的行和单元格,容器是正文部分。
我可以在服务器端获取动态输入的值,但是问题是,如果由于按下了提交按钮而导致回发,并且验证失败或页面刷新,则表主体标签丢失了,原因是它是在html中生成的。为了解决这个问题,我基本上重复相同的代码,但从页面加载后面的代码开始。我检查生成表格内容的文本框是否有数字,是否有数字调用此函数。
private void GenerateCompsTableDueToPostBack()
{
for (int i = 0; i < Convert.ToInt32(txtNumComponentes.Text); i++)
{
var txtcomponente = Request.Form["Componente" + (i + 1)];
var txtbase = Request.Form["Base" + (i + 1)];
var txtcomprimento = Request.Form["Comprimento" + (i + 1)];
TableRow row = new TableRow();
TableCell cellID = new TableCell();
TableCell cellComponente = new TableCell();
TableCell cellBase = new TableCell();
TableCell cellComprimento = new TableCell();
cellID.Text = (i + 1).ToString();
cellComponente.Text = "<input type='text' name='Componente" + (i + 1) + "' class='form-control form-control-sm rounded border border-dark' id='txtComponente" + (i + 1) + "' value='" + txtcomponente + "'/>";
cellBase.Text = "<input type='text' name='Componente" + (i + 1) + "' class='form-control form-control-sm rounded border border-dark' id='txtBase" + (i + 1) + "' value='" + txtbase + "'/>";
cellComprimento.Text = "<input type='text' name='Componente" + (i + 1) + "' class='form-control form-control-sm rounded border border-dark' id='txtComprimento" + (i + 1) + "' value='" + txtcomprimento + "' />";
row.Cells.Add(cellID);
row.Cells.Add(cellComponente);
row.Cells.Add(cellBase);
row.Cells.Add(cellComprimento);
tblComponentes.CssClass.Replace("componentes-table-invisible", "").Trim();
tblComponentes.Rows.Add(row);
}
}
但是,使用Repeater可以更轻松地完成这些操作,并且可以生成文本框,并且可以更轻松地防止数据从之前执行过的代码中回发,但是服务器端没有Onkeyup事件,因此我切换了方法。
我的目标是通过onkeyup快速生成动态输入并在回发时绑定数据。
我的问题是,我应该采取哪种方式解决此问题?我还有其他方法可以做到吗?我不想使用ontextchanged,因为它需要失去对文本框的关注,而我对此有一些问题