我有一个ASP.NET WebForms项目,它显示通过Repeater从数据库读取的数据。转发器的代码如下所示:
<asp:Repeater ID="repRMAproduct" runat="server">
<ItemTemplate>
<tr>
<td>
<%# Eval("Description") %>
</td>
<td>
<%# Eval("Qty") %>
</td>
<td>
<asp:TextBox ID="tbNewQty" runat="server"></asp:TextBox>
</td>
</tr>
</ItemTemplate>
</asp:Repeater>
我想要的是用户只在他想要输入的行上输入新的数量。然后,当他点击保存按钮时,我可以阅读这些新的数量及其相关的描述。
在MVC中,我应该使用jQuery构建URL并将其传递给Controller。但在WebForms中似乎不那么直观。我从哪里开始?
答案 0 :(得分:2)
在您的保存按钮点击事件处理程序中,您可以循环所有项目,并使用TextBox
获取FindControl
:
foreach(RepeaterItem item in repRMAproduct.Items)
{
TextBox tbNewQty = (TextBox) item.FindControl("tbNewQty");
string newQuantity = tbNewQty.Text.Trim();
int quantity;
if(int.TryParse(newQuantity, out quantity))
{
SaveNewRmaQuantity(product, quantity);
};
}
如果您使用Label
作为产品说明,则可以使用FindControl("LblDescriptionId")
获取该产品并将其Text
传递给SaveNewRmaQuantity
}。您还可以使用隐身控件(Visible=false)
,例如Label
来存储ProductId
。