Я использую BindingNavigator для удаления элементов из списка продуктов через представление данных. (Вызов метода main.DeleteProduct() вызывает репозиторий для удаления из базы данных).
Мне нужна помощь, чтобы улучшить код события ..DeleteItem_Click. Когда я нажимаю ячейку/или строку, а затем кнопку удаления (BindingNavigator), она никогда не удаляет эту строку. Он удаляет строку ниже или, если это последняя строка, строку выше, а если только одну строку, приводится нуль. Разве BindingSource.Current не должен быть тем же элементом, что и currentrow в datagridview?
Кроме того, хорошо ли использовать текущий элемент с помощью источника привязки? Хотелось бы лучшего предложения кода, если оно у вас есть.
Ваше здоровье!
public partial class Form1 : Form
{
private MainBL main = new MainBL();
private List<Product> products = new List<Product>
private void Form1_Load(object sender, EventArgs e)
{
bsProducts.DataSource = products; // BindingSource
bnProducts.BindingSource = bsProducts; // BindingNavigator
dataGridView1.DataSource = bsProducts; //
}
private void bindingNavigatorDeleteItem_Click(object sender, EventArgs e)
{
Product product = (Product)bsProducts.Current;
// Putting a breakpoint here, shows the identity property is not the same
// as row selected in datagridview.
main.DeleteProduct(product);
}