1

データリスト内のテキストボックス「Qty」の値を取得しようとしています。それは動作しません。なにが問題ですか?CartItemラベルと日付リストの両方がajaxupdatepanel内にあります。助けてくれてありがとう。これが私のコードです:

<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の値はnullです。

 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

あなたはこのようにすることができます

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 に答える
0

NamingContainerを使用するかParent、兄弟コントロールにアクセスできます

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

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 に答える