C# 根据输入编号ASP.NET在Repeater中添加带有文本框的X行
当用户在文本框中输入数字时,我需要在repeater上绑定x行。每行将有3个文本框。这就是我到目前为止所做的 在这里,我将ID添加到文本框中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
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
}