2017-06-07 13 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属性。

相关问题