2013-03-07 93 views
1

我正在嘗試獲取數據列表中的文本框「數量」的值。這是行不通的。哪裏不對?我在ajax更新面板中都有CartItem標籤和日期列表。謝謝你的幫助。這裏是我的代碼:無法在數據列表中獲取文本框的值

<asp:Label ID="CartItems" runat="server" Text="CartItem"></asp:Label> 
<br /> 
<asp:DataList ID="DataList1" runat="server" CellPadding="10" 
DataKeyField="product_id" DataSourceID="SqlDataSource1" RepeatColumns="2"> 
<ItemTemplate> 
    <asp:Label ID="product_id" runat="server" 
     Text='<%# Eval("product_id") %>' /><br/> 
    <asp:Label ID="product_name" runat="server" 
     Text='<%# Eval("product_name") %>' /> 
    <br /> 
    Qty 
    <br/> 

    <asp:TextBox ID="Qty" runat="server"></asp:TextBox> 
    <asp:Button ID="ButtonAddToCart" runat="server" Text="Add to Cart" 
     onClick="ButtonAddToCart_Click"/>      

    <br /> 
    </ItemTemplate> 
</asp:DataList> 

這裏是按鈕點擊事件。該CartItem具有空值:

protected void ButtonAddToCart_Click(object sender, EventArgs e) 

    { 
     CartItem.Text = DataList1.FindControl("Qty").ToString(); 
    } 

回答

0
TextBox Qty = (TextBox)DataList1.FindControl("Qty"); 
if(Qty != null) 
{ 
    CartItem.Text =Qty.Text; 
} 
0

您可以使用NamingContainerParent訪問同級控制

protected void ButtonAddToCart_Click(object sender, EventArgs e) 
{ 
    var button = sender as Button; 
    var textbox = button.NamingContainer.FindControl("Qty") as TextBox; 
    CartItem.Text = textbox.Text; 
} 
0

我更喜歡你使用的DataList 的item_command事件做一些這樣想。

<asp:Label ID="CartItems" runat="server" Text="CartItem"></asp:Label> 
    <br /> 
<asp:DataList ID="DataList1" runat="server" CellPadding="10" DataKeyField="product_id" DataSourceID="SqlDataSource1" RepeatColumns="2"> 
<ItemTemplate> 
    <asp:Label ID="product_id" runat="server" 
    Text='<%# Eval("product_id") %>' /><br/> 
<asp:Label ID="product_name" runat="server" 
    Text='<%# Eval("product_name") %>' /> 
<br /> 
Qty 
<br/> 

<asp:TextBox ID="Qty" runat="server"></asp:TextBox> 
<asp:Button ID="ButtonAddToCart" runat="server" Text="Add to Cart" CommandName="addtocart2" OnCommand="DataList1_ItemCommand" 
    />      

<br /> 
</ItemTemplate> 
</asp:DataList> 


這裏是工作的item_command事件。

public void DataList1_ItemCommand(object source, System.Web.UI.WebControls.CommandEventArgs e){ 
TextBox qtytxtbox = DataList1.FindControl("Qty") as TextBox; 
} 
0

你可以這樣做

protected void ButtonAddToCart_Click(object sender, EventArgs e) 
{ 

    Button ButtonAddToCart= (Button)sender; 
    DataListItem item = (DataListItem)ButtonAddToCart.NamingContainer; 
    var textbox = (TextBox)item.FindControl("Qty"); 
}   
0

試試這個

TextBox txtquantity = (TextBox)(e.Item.FindControl("Qty")); 

簡單地使用這個......你將在txtquantity

獲得的價值