【发布时间】:2016-03-24 18:48:22
【问题描述】:
我正在使用带有标签和文本框的中继器。它根据表中的列(名字、姓氏、地址等)生成正确的标签。用户需要在相应的文本框中输入他们的信息。
在此之后,我需要一种方法将他们的数据从文本框中插入到我的数据库中。但是,我不确定如何将每个项目插入到数据库的正确列中。我正在使用存储过程,所以它会是这样的:
sqlCmd.Parameters.Add("@FirstName", SqlDbType.Int).Value = firstName.Text;
当然,当我拥有的唯一文本框是重复的 txtData 时,我无法识别 firstName.Text。
foreach (RepeaterItem rpItem in RepeaterForm.Items)
{
Label lblData = rpItem.FindControl("lblData") as Label;
TextBox txtData = rpItem.FindControl("txtData") as TextBox;
if (txtData != null)
{
sqlCmd.Connection = sqlConn;
sqlCmd.CommandType = CommandType.StoredProcedure;
sqlCmd.CommandText = "spInsFormFields";
sqlCmd.Parameters.Clear();
//Code here
sqlCmd.ExecuteNonQuery();
}
}
一个示例中继器表单可能如下所示:
名字:约翰
姓:史密斯
地址:樱桃巷 123 号
我的数据库示例如下:
注册表
名字、姓氏、地址列
提交按钮应根据EventId 和FormId(我之前在代码中收集的)输入一行
编辑:
这是我的中继器代码(根据要求):
<asp:Repeater ID="RepeaterForm" runat="server" OnItemCommand="RepeaterForm_ItemCommand">
<ItemTemplate>
<table>
<tr>
<td><asp:Label ID="lblData" runat="server" Text='<%# Eval("MyColumn") %>'></asp:Label></td>
<td><asp:TextBox ID="txtData" runat="server"></asp:TextBox>
<br></br></td>
</tr>
</table>
</ItemTemplate>
<FooterTemplate><asp:Button ID="BtnSubmit" runat="server" Text="Submit" OnClick="BtnSubmit_Click" /></FooterTemplate>
</asp:Repeater>
【问题讨论】:
-
您的具体问题是什么?您的 SP 接受所有参数
First Name, Last Name, Address,等,并且在您的 SP 中,您可能正在将数据插入相应的列,对吧? -
请出示您的转发器标记,这将有助于识别您的问题。
-
嗯,我希望它足够聪明,可以自己生成参数等。这将用于许多具有许多差异字段的自定义表单。例如,有些表单会有地址字段,而有些则没有。
-
@RockOn - 但是您仍然应该将所有这些库放在一个物理表中,对吗?
-
我可以添加我的代码供您早上查看。 (目前在我的手机上,我面前没有我的代码。)谢谢!