从代码背后的中继器获取特定项目

本文关键字:项目 获取 中继器 代码 背后 | 更新日期: 2024-09-27 02:49:15

我有一个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中,它似乎不那么直观。我该何去何从?

从代码背后的中继器获取特定项目

在保存按钮点击事件处理程序中,您可以循环所有项目并使用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),例如Label)来存储ProductId