如何检查动态创建的文本框是否填充了数据

本文关键字:文本 是否 填充 数据 创建 何检查 检查 动态 | 更新日期: 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集合中。