在后面的代码中从 Repeater 获取特定项目
Get specific item from Repeater in code behind
我有一个 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 并将其传递给控制器。但在 WebForms 中似乎不太直观。我从这里去哪里?
在您的保存按钮单击事件处理程序中,您可以循环所有项目并使用 FindControl
:
获取 TextBox
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)
, f.e.a Label
来存储ProductId
.
我有一个 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 并将其传递给控制器。但在 WebForms 中似乎不太直观。我从这里去哪里?
在您的保存按钮单击事件处理程序中,您可以循环所有项目并使用 FindControl
:
TextBox
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)
, f.e.a Label
来存储ProductId
.