2014-01-30 45 views
0

我正在尝试制作购物车,当我按下更新产品的更新按钮来更新该产品的数量时,我需要获取属于它的文本框。如何从中继器行的div获取文本框控件?

为了管理这一点,我将productID绑定到了文本框所在的div,以便我可以获取正确的文本框。我的问题是如何获得这个文本框的价值?

这里是div

<td id="Td1" class="cart_update" runat="server" style="border-width: 0px 1px 1px 0px;"> 
    <div id='<%# DataBinder.Eval(Container.DataItem, "ProductID") %>' runat="server"> 
     <asp:TextBox ID="tbx" Text='<%# DataBinder.Eval(Container.DataItem, "ProductAmount") %>' CssClass="carttextbox" runat="server" /> 
     <asp:Button ID="btn_update" runat="server" OnCommand="btn_update_Click" Text="Update" CommandArgument='<%# DataBinder.Eval(Container.DataItem, "ProductID") %>' /> 
     <asp:Button ID="btn" runat="server" OnCommand="btn_Click" Text="Remove" CommandArgument='<%# DataBinder.Eval(Container.DataItem, "ProductID") %>' /> 
    </div> 
</td> 

这是我在我后面的代码到目前为止

protected void btn_update_Click(object sender, CommandEventArgs e) 
{ 
    int command = Convert.ToInt32(e.CommandArgument); 
    foreach(RepeaterItem item in Repeater1.Items) 
    { 
     TextBox tbx = find the right textbox; 
     if(tbx != null) 
     { 
      foreach (ShoppingCart r in cart.shoppingcart) 
      { 
       if (r.ProductID == command) 
       { 
        r.ProductAmount = Convert.ToInt32(tbx.Text); 
       } 
      } 
     } 
    } 
} 
+0

您是否尝试过这样的:http://msdn.microsoft.com/en-us/library/486wc64h(v=vs.110).aspx? –

+0

你想找到正确的文本框? – Damith

+0

可能重复[如何在中继器控制FindControls?](http://stackoverflow.com/questions/1736552/how-to-findcontrols-in-repeater-control) – Agat

回答

0
foreach(RepeaterItem item in Repeater1.Items) 
{ 
    var tbx = item.FindControl("tbx") as TextBox; 
    if(tbx != null) 
    { 
     foreach (ShoppingCart r in cart.shoppingcart) 
     { 
      if (r.ProductID == command) 
      { 
       r.ProductAmount = Convert.ToInt32(tbx.Text); 
      } 
     } 
    } 
} 
0

使用下面的代码

foreach (RepeaterItem lvi in myRepeater.Items) { 


TextBox tb = (TextBoxcb)lvi.FindControl("myTextBox"); 


} 
+0

工作只怪异的问题是列表中的productamount似乎没有改变。价格变化,但当我回到购物车时,金额变回1 – NoSixties

相关问题