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();
    } 
4

5 回答 5

0
    TextBox Qty = (TextBox)DataList1.FindControl("Qty");
if(Qty != null)
{
    CartItem.Text =Qty.Text;
}
于 2013-03-07T04:12:37.420 回答
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;
}
于 2013-03-07T04:26:07.723 回答
0

试试这个

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

只需使用这个......你会得到价值txtquantity

于 2013-12-19T20:31:30.240 回答
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;
}
于 2013-03-07T04:37:32.963 回答
0

你可以这样做

protected void ButtonAddToCart_Click(object sender, EventArgs e)
{

    Button ButtonAddToCart= (Button)sender;
    DataListItem item = (DataListItem)ButtonAddToCart.NamingContainer;
    var textbox = (TextBox)item.FindControl("Qty");
}          
于 2013-03-07T05:01:21.910 回答