无法在datalist中获取文本框值

时间:2013-03-07 04:05:45

标签: asp.net ajax datalist

我试图在datalist中获取textbox“Qty”的值。这是行不通的。怎么了?我在ajax updatepanel中有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();
    } 

5 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分: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;
}

答案 2 :(得分: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;
}

答案 3 :(得分:0)

你可以这样做

protected void ButtonAddToCart_Click(object sender, EventArgs e)
{

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

答案 4 :(得分:0)

尝试这个

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

只需使用此......您将获得txtquantity

中的值