2010-10-08 81 views
1

我需要在窗体(名称 - 值)中添加一个变量对列表。我决定把它在一个DataGridView,并且使用简单的暴食来管理它(.NET 2):DataGridView示例绑定问题

public class EventParameter 
{ 
    private string name; 

    public string Name 
    { 
     get { return name; } 
     set { name = value; } 
    } 
    private string value; 

    public string Value 
    { 
     get { return this.value; } 
     set { this.value = value; } 
    } 
} 

///////////////////// USER CONTROL INITIALIZATION 
private List<EventParameter> eventGridParams; 
public GridEventSender() 
{ 
    InitializeComponent(); 
    eventGridParams = new List<EventParameter>(); 
    this.dataGridView1.AutoGenerateColumns = true; 
    this.dataGridView1.DataSource = eventGridParams; 
} 

///////////////////// ADD PARAMETER BUTTON 
private void btnAddParam_Click(object sender, EventArgs e) 
{ 
    eventGridParams.Add(new EventParameter()); 
} 

当我启动应用程序,我看到两列,名称和值自动生成的,并网格是空的。

但是,当我点击添加参数按钮,没有任何反应......错误在哪里?

回答

2
public partial class frmGridView : Form 
    { 
     private List<EventParameter> eventGridParams; 
     private BindingSource bs; 
     public frmGridView() 
     { 
      InitializeComponent(); 
      eventGridParams = new List<EventParameter>(); 
      bs = new BindingSource(); 
      bs.DataSource = eventGridParams; 
      //this.dataGridView1.AutoGenerateColumns = true; //you don't need this 
      this.dataGridView1.DataSource = bs; 
     } 

     private void button1_Click(object sender, EventArgs e) 
     { 
     //eventGridParams.Add(new EventParameter() { Name="a", Value = "a"}); //object initializer is only available for c# 3.0 
     EventParameter eventParam = new EventParameter(); 
     eventParam.Name = "a"; 
     eventParam.Value = "a"; 
     eventGridParams.Add(eventParam); 
     bs.ResetBindings(false); 
     } 
    } 
+0

ahh ..我的不好。我习惯了WebForm的DataBind()。你需要BindingSource来使它工作。我编辑了我的帖子。我的道歉。 – bla 2010-10-08 09:29:22

+0

很酷。我甚至不需要添加按钮... – serhio 2010-10-08 09:41:21