Пример привязки образца DataGridView - PullRequest
1 голос
/ 08 октября 2010

Мне нужно добавить список пар переменных в форме (имя-значение). Я решил установить его в сетке данных и использовать простой бинг для управления им ( .NET 2 ):

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 столбца, Имя и Значение генерируются автоматически, а сетка пуста.

Но когда я нажимаю на кнопку Добавить параметр, ничего не происходит ... Где ошибка?

1 Ответ

2 голосов
/ 08 октября 2010
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);
        }
    }
...