Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 根据输入编号ASP.NET在Repeater中添加带有文本框的X行_C#_Asp.net - Fatal编程技术网

C# 根据输入编号ASP.NET在Repeater中添加带有文本框的X行

C# 根据输入编号ASP.NET在Repeater中添加带有文本框的X行,c#,asp.net,C#,Asp.net,当用户在文本框中输入数字时,我需要在repeater上绑定x行。每行将有3个文本框。这就是我到目前为止所做的 在这里,我将ID添加到文本框中 protected void rptComponentes_OnItemDataBound(object sender, RepeaterItemEventArgs e) { if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.Alt

当用户在文本框中输入数字时,我需要在repeater上绑定x行。每行将有3个文本框。这就是我到目前为止所做的

在这里,我将ID添加到文本框中

protected void rptComponentes_OnItemDataBound(object sender, RepeaterItemEventArgs e)
    {
        if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
        {
            for (int i = 0; i < Convert.ToInt32(txtNumComponentes.Text); i++)
            {
                Label lblIdComponente = (Label)e.Item.FindControl("lblIdComponente");                  
                lblIdComponente.ID += (i + 1);
                TextBox txtComponente = (TextBox)e.Item.FindControl("txtComponente");        
                txtComponente.ID += (i + 1);
                TextBox txtBase = (TextBox)e.Item.FindControl("txtBase");  
                txtBase.ID += (i + 1);
                TextBox txtComprimento = (TextBox)e.Item.FindControl("txtComprimento");  
                txtComprimento.ID += (i + 1);
            }
        }
    }
这是中继器

  <asp:Repeater ID="rptComponentes" runat="server" OnItemDataBound="rptComponentes_OnItemDataBound">
      <HeaderTemplate>
          <table id="tblArtigos" class="table table-bordered dataTable text-center">
              <thead class="thead-dark">
                 <tr>
                     <th>#</th>
                     <th>Componente *</th>
                     <th>Base *</th>
                     <th>Comprimento *</th>
                 </tr>
             </thead>
     </HeaderTemplate>
     <ItemTemplate>
         <tbody>
             <tr>
                 <td>
                     <asp:Label ID="lblIdComponente" CssClass="form-control form-control-sm rounded border border-dark" runat="server"></asp:Label>
                 </td>
                 <td>
                     <asp:TextBox ID="txtComponente" CssClass="form-control form-control-sm rounded border border-dark" runat="server"></asp:TextBox>
                  </td>
                  <td>
                     <asp:TextBox ID="txtBase" CssClass="form-control form-control-sm rounded border border-dark" runat="server"></asp:TextBox>
                  </td>
                  <td>
                     <asp:TextBox ID="txtComprimento" CssClass="form-control form-control-sm rounded border border-dark" runat="server"></asp:TextBox>
                  </td>
              </tr>
          </tbody>
      </ItemTemplate>
      <FooterTemplate>
          </table>
      </FooterTemplate>
 </asp:Repeater>

#
成分*
基地*
买办*
编辑:
问题似乎是,当我为动态文本框提供ID时,会出现空异常

您需要执行以下操作:

根据输入到txtnumcomponents的整数值,向数据表添加N行

  protected void BindComponentes()
    {
      DataTable dt = new DataTable();

        for (int i = 0; i < Convert.ToInt32(txtNumComponentes.Text); i++)
        {

            DataRow dr = null;

              dt.Columns.Add(new DataColumn("RowNumber", typeof(int)));
        dt.Columns.Add(new DataColumn("Column1", typeof(string)));
        dt.Columns.Add(new DataColumn("Column2", typeof(string)));
        dt.Columns.Add(new DataColumn("Column3", typeof(double)));
        //create new row
        dr = dt.NewRow();

        //add the row to DataTable
        dt.Rows.Add(dr);
        }

       rptComponentes.DataSource = dt;
        rptComponentes.DataBind();
}

尝试在
HeaderTemplate
中移动
,在
FooterTemplate
中移动
,它们现在会出现,但行数似乎不正确,因为在数据绑定事件中提供ID时,我会收到nullexception。就是这样!我不知道如何循环通过控件来识别它们。我忘记了eventhandler的索引。。。谢谢!
  protected void BindComponentes()
    {
      DataTable dt = new DataTable();

        for (int i = 0; i < Convert.ToInt32(txtNumComponentes.Text); i++)
        {

            DataRow dr = null;

              dt.Columns.Add(new DataColumn("RowNumber", typeof(int)));
        dt.Columns.Add(new DataColumn("Column1", typeof(string)));
        dt.Columns.Add(new DataColumn("Column2", typeof(string)));
        dt.Columns.Add(new DataColumn("Column3", typeof(double)));
        //create new row
        dr = dt.NewRow();

        //add the row to DataTable
        dt.Rows.Add(dr);
        }

       rptComponentes.DataSource = dt;
        rptComponentes.DataBind();
}
    if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
            {

             int itemIndex =  e.Item.ItemIndex;
             Label lblIdComponente = (Label)e.Item.FindControl("lblIdComponente");                  
                lblIdComponente.ID = itemIndex.ToString();

            // Similar logic for other control IDs
        }