2016-06-14 9 views
2

私はこのDataLIstの中にasp.net webformのDataListコントロールを持っています。私はデータベースにバインドされた2つのラベルと1つのボタンを持っています。 ラベルの1つはIdと他の1つのストックを表します。 特定の製品のボタンクリックイベントをキャプチャし、その製品をユーザーカートに追加します。ここでasp.net DataListからボタンクリックイベントをキャプチャする方法

は私のデータリストである:ここでは

<asp:DataList ID="dListProduct" runat="server" RepeatColumns="4" OnItemCommand="dListProduct_ItemCommand"> 
      <ItemTemplate> 
       <div> 
        <table class="table-responsive" border="1">      
         <tr> 
          <td> 
            <asp:Label runat="server" Text="Available Stock: " ></asp:Label><asp:Label ID="Label1" runat="server" Text='<%# Eval("Stock")%>'></asp:Label> 
          </td> 
         </tr> 
         <tr> 
          <td> 
            <asp:Label runat="server" Text="Id" ></asp:Label><asp:Label ID="lblPId" runat="server" Text='<%# Eval("Product_Id")%>' Visible="false"></asp:Label> 
          </td> 
         </tr> 
         <tr> 
          <td> 
           <asp:Button id="btnAddtoCart" runat="server" Text="Add to Cart"/> 
          </td> 
         </tr> 
        </table> 
       </div> 
      </ItemTemplate> 
     </asp:DataList> 

は私がDataListコントロールのOnItemCommandイベントで使用していたコードです:

protected void dListProduct_ItemCommand(object source, DataListCommandEventArgs e) 
     { 
      Label lbl = (Label)e.Item.FindControl("lblPId"); 
      Response.Write(lbl.Text); 
     } 

が、このコードが実行されることはありません飽きません。 誰も私を助けることができますか?

+0

あなたはordertoに 'Button'に' OnClick'イベントを追加する必要がありますが、 'click'イベント – Chaitanya

+0

をキャプチャこのシナリオでは、どの製品のボタンがクリックされたかをどのように判断できますか?ページ上に1つ以上のボタンがあります。ボタンのクリックでそれぞれの製品のIDを取得します。 –

+0

@Chaitanya、[ItemCommandのドキュメント](https://msdn.microsoft.com/en-us/library) /system.web.ui.webcontrols.datalist.itemcommand(v=vs.110).aspx)は、 "任意のボタンがDataListコントロールでクリックされたときに発生します。 OPはなぜ 'OnClick'を使わなければならないのですか? –

答えて

0

以下のコードをコピーして貼り付けてください。

の背後にあるコード:

public partial class DataListExample : System.Web.UI.Page 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     if(!Page.IsPostBack) 
     { 
      this.BindData(); 
     } 
    } 

    private void BindData() 
    { 
     MyStock stock1 = new MyStock { Product_Id = 1, Stock = "Stock 1" }; 
     MyStock stock2 = new MyStock { Product_Id = 2, Stock = "Stock 2" }; 
     dListProduct.DataSource = new List<MyStock> { stock1, stock2 }; 
     dListProduct.DataBind(); 
    } 

    protected void dListProduct_ItemCommand(object source, DataListCommandEventArgs e) 
    { 
     Label lbl = (Label)e.Item.FindControl("lblPId"); 
     Response.Write(lbl.Text); 
    } 
} 

public class MyStock 
{ 
    public int Product_Id { get; set; } 
    public string Stock { get; set; } 
} 

.ASPX:

<asp:DataList ID="dListProduct" runat="server" RepeatColumns="4" OnItemCommand="dListProduct_ItemCommand"> 
    <ItemTemplate> 
     <div> 
      <table class="table-responsive" border="1"> 
       <tr> 
        <td> 
         <asp:Label runat="server" Text="Available Stock: "></asp:Label><asp:Label ID="Label1" runat="server" Text='<%# Eval("Stock")%>'></asp:Label> 
        </td> 
       </tr> 
       <tr> 
        <td> 
         <asp:Label runat="server" Text="Id"></asp:Label><asp:Label ID="lblPId" runat="server" Text='<%# Eval("Product_Id")%>' Visible="false"></asp:Label> 
        </td> 
       </tr> 
       <tr> 
        <td> 
         <asp:Button ID="btnAddtoCart" runat="server" Text="Add to Cart" /> 
        </td> 
       </tr> 
      </table> 
     </div> 
    </ItemTemplate> 
</asp:DataList> 
関連する問題