2017-06-07 47 views
0

我的網頁上顯示了一些來自數據庫的數據,每個項目都有按鈕可以將其從數據庫中刪除。如何將值傳遞給ListView中按鈕的點擊處理程序?

這裏的ASPX:

<asp:ListView ID="productList" runat="server" 
       DataKeyNames="id_produkt" 
       ItemType="Shop.Models.Produkt" SelectMethod="GetProducts"> 
       <ItemTemplate> 
        <tr> 
         <td><%#:Item.id_produkt%></td> 
         <td><%#:Item.nazwa_produkt%></td> 
         <td><%#:Item.cena%></td> 
         <td><%#:Item.poprzednia_cena%></td> 
         <td><%#:Item.Ilosc%></td> 
         <td> 
          <asp:Button CssClass="btn btn-info btn-sm" ID="Edytuj" runat="server" Text="Edytuj" OnClick="AddProductButton_Click" CausesValidation="true" /> 
          <asp:Button CssClass="btn btn-danger btn-sm" ID="RemoveButton" runat="server" Text="Usuń Produkt" OnClick="RemoveProductButton_Click" CausesValidation="false" /> 
          <a href="AdminPage_Details.aspx?productID=<%#:Item.id_produkt%>" class="btn btn-info btn-sm">Szczegóły</a> 
         </td> 
        </tr> 
       </ItemTemplate> 
       <ItemSeparatorTemplate></ItemSeparatorTemplate> 
      </asp:ListView> 

我怎樣才能Item.id_produkt代碼隱藏的方法?

現在它看起來像這樣:

protected void RemoveProductButton_Click(object sender, EventArgs e) 
     { 
      using (var _db = new Shop.Models.EgzemplarzContext()) 
      { 
       int productId = Convert.ToInt16(); 
       var myItem = (from c in _db.Produkty where c.id_produkt == productId select c).FirstOrDefault(); 

       IQueryable<Egzemplarz> query = _db.Egzemplarze; 
       query = query.Where(p => p.id_produkt == productId); 

       if (myItem != null && query != null) 
       { 
        foreach (var item in query) 
        { 
         _db.Egzemplarze.Remove(item); 
        } 

        _db.Produkty.Remove(myItem); 
        _db.SaveChanges(); 

        // Reload the page. 
        string pageUrl = Request.Url.AbsoluteUri.Substring(0, Request.Url.AbsoluteUri.Count() - Request.Url.Query.Count()); 
        Response.Redirect(pageUrl + "?ProductAction=remove"); 
       } 
       else 
       { 
        LabelAddStatusDanger.Text = "Nie można usunąć produktu."; 
       } 
      } 
     } 

不知怎的,我需要從這種方法的產品列表獲取Item.id_produkt。

我該怎麼做?

回答

0

使用按鈕的CommandArgument屬性傳遞它。

標記:

<asp:Button ID="RemoveButton" 
      runat="server" 
      Text="Usuń Produkt" 
      OnClick="RemoveProductButton_Click" 
      CommandArgument='<%#:Item.id_produkt%>' /> 

後面的代碼:

protected void RemoveProductButton_Click(object sender, EventArgs e) 
{ 
    var button = (Button)sender; 
    var id_produkt = button.CommandArgument; 
} 

這將在ListView按鈕的CommandArgument有您想要的產品ID。然後,當點擊事件處理程序得到時,發件人將成爲您的按鈕。我們需要將其轉換爲按鈕類型以訪問CommandArgument屬性。

相關問題