nowy wiersz w DataGridView

0

Wiitam,

mam model człowieka:

namespace Toolbox.Models
{
    public class People
    {
        public string Name { get; set; }
        public string Surname { get; set; }
        public string City { get; set; }
        public int Age { get; set; }
    }
}

chciałabym, żeby kod poniżej dodawał nowego człowieka do listy i żeby ta lista ładowała się do DataGridView, ale zamiast dodawać nowe osoby, zmienia mi wartości w pierwszym wierszu.

public void AddNewPeople(TextBox textBoxName, TextBox textBoxSurname, TextBox textBoxCity, TextBox textBoxAge, DataGridView dataGridViewPeople)
        {
            var people = new People();
            people.Name = textBoxName.Text;
            people.Surname = textBoxSurname.Text;
            people.City = textBoxCity.Text;
            people.Age = Convert.ToInt32(textBoxAge.Text);

            var ListOfPeople = new List<People>();

            ListOfPeople.Add(people);

            dataGridViewPeople.DataSource = ListOfPeople;
        }
0

Zmienia Ci 1 wiersz bo za każdym razem tworzysz nową listę

0

Dodałam nową metodę.

public static void NewPeople(TextBox textBoxName, TextBox textBoxSurname, TextBox textBoxCity, TextBox textBoxAge)
        {
            var people = new People();
            people.Name = textBoxName.Text;
            people.Surname = textBoxSurname.Text;
            people.City = textBoxCity.Text;
            people.Age = Convert.ToInt32(textBoxAge.Text);

            var ListOfPeople = new List<People>();
        }

Jak mam się teraz odwołać do tej listy w mojej metodzie o nazwie AddNewPeople? Próbowałam tak jak poniżej

public void AddNewPeople(TextBox textBoxName, TextBox textBoxSurname, TextBox textBoxCity, TextBox textBoxAge, DataGridView dataGridViewPeople)
        {
            NewPeople.ListOfPeople.Add(people);

            dataGridViewPeople.DataSource = NewPeople.ListOfPeople;
        }
0

dobra od początku najlepiej wykorzystaj sobie BindingList
przykład

public class People
{
        public int Age { get; set; }
        public string Name { get; set; }
        public string SureName { get; set; }
}
public partial class Form1 : Form
    {
        private BindingList<People> people;
        public Form1()
        {
            InitializeComponent();
            people = new BindingList<People>(new List<People>
            {
                new People {Age = 53, Name = "John", SureName = "Dick" }
            });
            dataGridView1.DataSource = people;
        }

        private void zapisz_Click(object sender, EventArgs e)
        {
            var ppl = new People { Age = Convert.ToInt32(age.Text), Name = name.Text, SureName = surename.Text };
            people.Add(ppl);
        }
    }

a usuwasz w podobny sposób z tej listy

        private void button1_Click(object sender, EventArgs e)
        {
            var index = dataGridView1.Rows[dataGridView1.CurrentCell.RowIndex].Index;
            DataGridViewRow row = dataGridView1.Rows[index];
            var item = (People)row.DataBoundItem;
            people.Remove(item);
        }

1 użytkowników online, w tym zalogowanych: 0, gości: 1