2012-01-26 50 views
1
public class PurchaseOrderItem 
{ 
    public Int64 PONumber { get; set; } 
    public string Description { get; set; } 
    public string UM { get; set; } 
    public int QTY { get; set; } 
    public decimal Cost { get; set; } 
} 

foreach (PurchaseOrderItem item in po.PurchaseOrderItems) 
{ 
    dgvPOItem.Rows.Add(item); 
} 

上面的Foreach不起作用。 我無法使用DataSource,因爲我需要在添加數據後添加一個空行 因此,將來會出現一個空行,用戶可以在gridview上添加值。C#WindowsForm GridView - 如何將類添加到GridView?

+0

您是否使用Item/EditItem/Footer模板?空白行可以作爲頁腳模板的一部分創建,然後您可以簡單地將您的PurchaseOrderItem的列表綁定到網格。另外,什麼阻止你將一個空的'PurchaseOrderItem'附加到你的集合,然後綁定到'.DataSource'? –

回答

1

你不能使用BindingList<PurchaseOrderItem>? 這應該允許您將項目添加到您的收藏從DGV控制(使用空行)


編輯:我創建簡單的WinForm程序, 只在主窗體

Form1中DGV控制。 cs代碼:

 
using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Windows.Forms; 

namespace WindowsFormsApplication1 { 
    public partial class Form1 : Form { 
     public Form1() { 
      InitializeComponent(); 

      list.Add(new PurchaseOrderItem() { 
       PONumber = 1, 
       Description = "First item", 
       UM = "something", 
       QTY = 2341, 
       Cost = 0.99M 
      }); 

      dataGridView1.DataSource = list; 

      dataGridView1.RowsAdded += new DataGridViewRowsAddedEventHandler(dataGridView1_RowsAdded); 
     } 

     void dataGridView1_RowsAdded(object sender, DataGridViewRowsAddedEventArgs e) { 
      object o = list; // added for breakpoint with variable viewing 
      // you can watch your list changing here, when you add new rows 
     } 

     BindingList list = new BindingList(); 
    } 

    public class PurchaseOrderItem { 
     public Int64 PONumber { get; set; } 
     public string Description { get; set; } 
     public string UM { get; set; } 
     public int QTY { get; set; } 
     public decimal Cost { get; set; } 
    } 
}