Как удалить элемент из BindingList, связанный с gridview? - PullRequest
0 голосов
/ 23 марта 2011

У меня есть gridview, где я использую список привязок для привязки.В этой сетке я могу добавить / удалить элемент n раз.Так что я хочу выражение, что если я удалю строку из сетки, он удалит тот же элемент из списка.Мой список - BindingList.

Ответы [ 2 ]

2 голосов
/ 23 марта 2011

Это лучший способ.Код удаляет выбранную строку из dataGrid и bindingList:

public partial class Form1 : Form
    {
        BindingList<Person> bList;
        public Form1()
        {
            InitializeComponent();
            bList = new BindingList<Person> 
            {
                new Person{ id=1,name="John"},
                new Person{id=2,name="Sara"},
               new Person{id=3,name="Goerge"}
            };
            dataGridView1.DataSource = bList;
        }

        private void button1_Click(object sender, EventArgs e)
        {
            string item = dataGridView1[dataGridView1.CurrentCell.ColumnIndex, dataGridView1.CurrentCell.RowIndex].Value.ToString();
            if (item != null && dataGridView1.CurrentCell.ColumnIndex != 0)
            {
                int _id = Convert.ToInt32(dataGridView1[0, dataGridView1.CurrentCell.RowIndex].Value);
                var bList_Temp = bList.Where(w => w.id == _id).ToList();

                //REMOVE WHOLE ROW:
                foreach (Person p in bList_Temp)
                    bList.Remove(p);
            }
        }
    }

    class Person
    {
        public int id { get; set; }
        public string name { get; set; }
    }

Mitja

0 голосов
/ 23 марта 2011

Если ваша dataGrid связана с источником данных, таким как BindingList, вы должны удалить элемент в источнике данных (в BinidngList). Проверьте это:

BindingList bList;

private void buttonRemoveSelected_Click(object sender, EventArgs e)
{
    string item = dataGridView1[dataGridView1.CurrentCell.ColumnIndex, dataGridView1.CurrentCell.RowIndex].Value.ToString();
    if (item != null)
    {
        int _id = Convert.ToInt32(dataGridView1[0, dataGridView1.CurrentCell.RowIndex].Value);
        foreach (Person p in bList)
        {
            if (p.id == _id)
                p.name = "";
        }
    }
}

Митя

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