Как удалить элемент из BindingList, связанный с gridview?
У меня есть gridview, где я использую список привязки для привязки. В этой сетке я могу добавить / удалить элемент n раз. Поэтому я хочу выражение, что если я удалю строку из сетки, он удалит тот же элемент из списка. Мой список - BindingList.
2 ответа
Решение
Это намного лучший подход. Код удаляет выбранную строку из 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; }
}
Митя
Если ваша 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 = "";
}
}
}
Митя