2016-09-17 38 views
0

我試圖添加按鈕到DataGridView從它刪除項目。要做到這一點,我試圖使用DataGridViewButtonCell,因爲我看到它可以包含圖像。我不想讓我的按鈕留在第一列DataGridView,但我有一個IList,我用它作爲DataSource,我不知道如何在這種情況下將該按鈕添加到GridView創建DataGridViewButtonCell刪除DataGridView的項目?

我該怎麼做?

這裏是我的代碼:

private void setDataSource(){ 
    grid.DataSource = ivDAO.findAllItemVenda(venda); 
    grid.ClearSelection(); 
    defineGrid(); 
} 

private void defineGrid() { 
      //header 
      grid.Columns["produto"].HeaderText = "Produto"; 
      grid.Columns["valorUn"].HeaderText = "Unit.R$"; 
      grid.Columns["quantidade"].HeaderText = "Qtd."; 
      grid.Columns["total"].HeaderText = "Total R$"; 

      //hide 
      grid.Columns["id"].Visible = false; 
      grid.Columns["venda"].Visible = false; 

      //width 
      grid.Columns["produto"].Width = 235; 
      grid.Columns["valorUn"].Width = 80; 
      grid.Columns["quantidade"].Width = 50; 
      grid.Columns["total"].Width = 80; 

      //align 
      grid.Columns["valorUn"].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight; 
      grid.Columns["quantidade"].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight; 
      grid.Columns["total"].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight; 

      //add button 
      DataGridViewButtonCell btnDelete = new DataGridViewButtonCell(); 
      btnDelete.Value = "delete"; 
      grid.Rows.Add(btnDelete); 
     } 

我想這一點。

enter image description here

+0

[DataGridView中有按鈕控制 - 刪除行(http://stackoverflow.com/a/33549704/3110834) –

+0

[按鈕列的DataGridView圖像](http://stackoverflow.com/a/36253883/3110834) –

回答

0

完成。最後我做了我想要的。

我做到了。

private void setDataSource(){ 
    //added column with image before set datasource 
    if (grid.Columns["Del"] == null) { 
        var col = new DataGridViewImageColumn(); 
        col.HeaderText = ""; 
        col.Name = "Del"; 
        col.Image = TerminalControleDeVendas.Properties.Resources.trash; 
        grid.Columns.Add(col); 
       } 
    grid.DataSource = ivDAO.findAllItemVenda(venda); 
    grid.ClearSelection(); 
    defineGrid(); 
} 


private void defineGrid() { 
      //header 
      grid.Columns["produto"].HeaderText = "Produto"; 
      grid.Columns["valorUn"].HeaderText = "Unit.R$"; 
      grid.Columns["quantidade"].HeaderText = "Qtd."; 
      grid.Columns["total"].HeaderText = "Total R$"; 

      //hide 
      grid.Columns["id"].Visible = false; 
      grid.Columns["venda"].Visible = false; 

      //width 
      grid.Columns["Del"].Width = 30; 
      grid.Columns["produto"].Width = 220; 
      grid.Columns["valorUn"].Width = 80; 
      grid.Columns["quantidade"].Width = 50; 
      grid.Columns["total"].Width = 80; 

      //align 
      grid.Columns["valorUn"].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight; 
      grid.Columns["quantidade"].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight; 
      grid.Columns["total"].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight; 

     } 

最後,我添加了處理程序來刪除項目

private void grid_CellContentClick(object sender, DataGridViewCellEventArgs e) { 
      if (this.grid.Columns[e.ColumnIndex].Name == "Del") { 
       DialogResult confirma = MessageBox.Show("Deseja realmente excluir o item ?", "Excluir", MessageBoxButtons.YesNo, MessageBoxIcon.Question); 
       if (confirma == DialogResult.Yes) { 
        ItemVenda iv = (ItemVenda)grid.CurrentRow.DataBoundItem; 
        ivDAO.delete(iv);       
       } 
      }    
     } 

結果是

enter image description here