Данные не отображаются в сетке данных при добавлении в список, связанный с объектом DataSouce - PullRequest
0 голосов
/ 14 сентября 2018

У меня есть список лиц, связанных с dataGridView, но когда я добавляю новые данные и сохраняю их в список, он не показывает, что он добавлен в dataGridView.

код показывает вот так

private IList<Person> personList = new List<Person>();

private void AddPerson()
    {

        var count = personList.Count;
        var finId = 0;
        if (count != 0)
        {
            var valid = personList.LastOrDefault();
            if (valid != null)
            {
                finId = valid.Id;
            }
        }

        var person = new Person
        {
            Id = ++finId,
            FirstName = tbFirstName.Text,
            LastName = tbFirstName.Text,
            Email = tbEmail.Text,
            DateOfBirth = dtDateOfBirth.Value
        };

        personList.Add(person);
    }

private void PopulateGrid()
    {
        //dataGridView1.DataSource = personList;
        dataGridView1.Rows.Add(new Person
        {
            Id = 1,
            FirstName = "Randolf",
            LastName = "Segubre",
            Email = "rsegubre@gmail.com",
            DateOfBirth = DateTime.Parse("08/28/1991"),
        });
        personBindingSource.DataSource = personList;
    }

private void Form1_Load(object sender, EventArgs e)
    {
        PopulateGrid();
    }

private void btnAdd_Click(object sender, EventArgs e)
    {
        AddPerson();
        MessageBox.Show("Successfully Added","INFORMATION",MessageBoxButtons.OK, MessageBoxIcon.Information);

        this.Clear();

    }

Значения по умолчанию, которые отображаются в dataGridView, но когда вы добавляете данные во время работы программы, он не показывает их dataGridView. Но это показывает, что он был добавлен в personList. Просто не добавляет в dataGridView

1 Ответ

0 голосов
/ 15 сентября 2018

В отношении всех комментариев и ответов, которые я получил, спасибо, ребята. Я нашел то, что мне нужно. Вот мой ответ.

private IList<Person> _personList = new List<Person>();

private void PopulateGrid()
    {
        BindingSource bs = new BindingSource();
        bs.DataSource = _personList;
        dataGridView1.DataSource = bs;
    }

private void AddPerson()
    {
        var count = _personList.Count;
        var finId = 0;
        if (count != 0)
        {
            var valid = _personList.LastOrDefault();
            if (valid != null)
            {
                finId = valid.Id;
            } 
        }

        var person = new Person
        {
            Id = ++finId,
            FirstName = tbFirstName.Text,
            LastName = tbFirstName.Text,
            Email = tbEmail.Text,
            DateOfBirth = dtDateOfBirth.Value
        };
        MessageBox.Show("Successfully Added", "INFORMATION", MessageBoxButtons.OK, MessageBoxIcon.Information);
        _personList.Add(person);
        this.PopulateGrid();
    }

Я не изменил IList на BindingList. Он остался прежним, но я добавил BindingSource.

Я добавил список в источник данных связующего источника, прежде чем поместить его в источник данных решетки данных. Затем вызовите его для метода AddPerson, чтобы при каждом выполнении AddPerson представление данных также перезагружалось.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...