如何检查动态创建的文本框是否填充了数据
本文关键字:文本 是否 填充 数据 创建 何检查 检查 动态 | 更新日期: 2023-09-27 18:35:22
我有 10 行文本框(4 列)
如果所有 10 行都填充了数据,我需要触发一个事件来执行某些操作。
我是 Web 开发的新手,我真的不明白如何在 HTML 页面上引用由代码隐藏动态生成的项目。这是它在HTML中的样子:
<tr align="center">
<td style="height: 85px">
</td>
<td align="center" style="width: 440px; height: 310px">
<fieldset class="field1" style="text-align: center">
<legend class="Eblegend" id="legendObligation2">
<%=frameName%>
</legend>
<asp:Panel ID="pnlTable" runat="server" Width="620px" Height="310px">
</asp:Panel>
</fieldset>
</td>
</tr>
此代码将转换为可编辑的表(4 列和 10 行)。
我需要检查是否已填充所有框,以便启用"下一步"按钮。
问题是,我不知道如何在动态生成的表上引用这些"单元格",以便我可以说"如果不是空或空,请执行此操作"
谁能帮我一把?
为了能够访问这些值,您还需要在回发的情况下创建TextBoxes
。这必须很早就发生,并且控件的 ID 需要相同。
下面的代码演示了一个小型示例,该示例动态创建 TextBox 并在以后读取该值:
.ASPX:
<form id="form1" runat="server">
<div>
<asp:Button ID="btnCreateTextBox" runat="server" Text="Create TextBox" OnClick="btnCreateTextBox_Click" />
</div>
<div>
<asp:PlaceHolder ID="placeHolder" runat="server"></asp:PlaceHolder>
</div>
<div>
<asp:Button ID="btnPostBack" runat="server" Text="Do a postback" />
</div>
<div>
<asp:Label ID="lbl" runat="server" />
</div>
</form>
代码隐藏:
public partial class WebForm1 : System.Web.UI.Page
{
protected TextBox txt;
protected override void OnInit(EventArgs e)
{
base.OnInit(e);
if (Request.Form.AllKeys.Any(x => x == "TextBox1"))
CreateTextBox();
}
protected void Page_Load(object sender, EventArgs e)
{
if (txt != null)
lbl.Text = "TextBox value is " + txt.Text;
else
lbl.Text = "No value in TextBox";
}
protected void btnCreateTextBox_Click(object sender, EventArgs e)
{
if (txt == null)
{
CreateTextBox();
}
}
private void CreateTextBox()
{
txt = new TextBox();
txt.ID = "TextBox1";
placeHolder.Controls.Add(txt);
}
}
重要的部分是,如果回发数据中有值,则在OnInit
中创建文本框,具有相同的 ID。即使文本框为空,文本框的键(对于示例,为 TextBox1)也存在于AllKeys
集合中。