2014-01-30 72 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

相關問題