Фильтрация данных

Удаление записей таблицы Shops

Для удаления строки, выделенной пользователем в списке товаров и поставщиков, нужно воспользоваться кнопкой Удалить. Код метода, выполняющего обработку события для этой кнопки, представлен ниже:

 

private void button3_Click(object sender, EventArgs e)

{

//удаление записей из таблицы Shops

if (dataGridView1.SelectedRows.Count != 0)

{

if (MessageBox.Show("Вы действительно хотите удалить запись?", "Подтверждение",

MessageBoxButtons.YesNo, MessageBoxIcon.Question) == System.Windows.Forms.DialogResult.Yes)

{

try

{

dataSet1.Shops.Rows[RowId].Delete();

}

catch (Exception)

{

}

UpdateGoods();

}

}

else

{

MessageBox.Show("Выберите строку для удаления!!!", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Stop);

}

}

 

После проверки, выбрана ли в таблице строка для удаления и вывода подтверждающего сообщения, удаление выполняется методом Delete(), затем изменения сохраняются в БД и отображаются на форме.

 

Удаление записей таблицы Goods

Для удаления продукта используется кнопка Удалить, расположенная справа от списка продуктов. Обработчик события этой кнопки приведен ниже:

 

private void button7_Click(object sender, EventArgs e)

{

//удаление записей из таблицы Goods

if (dataGridView2.SelectedRows.Count != 0)

{

if (MessageBox.Show("Вы действительно хотите удалить запись?", "Подтверждение",

MessageBoxButtons.YesNo, MessageBoxIcon.Question) == System.Windows.Forms.DialogResult.Yes)

{

try

{

dataSet1.Goods.Rows[Number_goods].Delete();

}

catch (Exception)

{

}

UpdateGoods();

}

}

else

{

MessageBox.Show("Выберите строку для удаления!!!", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Stop);

}

}

 

Действие этого обработчика идентично предыдущему.

 

В программе приведен пример фильтра, позволяющего просматривать продукты одного вида товара. Продукт выбирается в выпадающем списке comboBox1. Режим фильтрации включается флажком checkBox1. Обработчик щелчка по этому флажку представлен ниже:

 

private void checkBox1_CheckedChanged(object sender, EventArgs e)

{

if (checkBox1.Checked && comboBox1.Text != "")

{

string product = comboBox1.SelectedItem.ToString();

string str = "Goods ' ' " + product + " ' ' ";

DataRow[] shops = dataSet1.Shops.Select(str);

str = "Product = " + shops[0]["id"];

goodsBindingSource.Filter = str;

}

else

{

goodsBindingSource.Filter = "";

}

}

 

В начале работы данного обработчика проверяется, выбрал ли пользователь требуемый продукт и установил ли флажок фильтрации. Фильтрация задается для таблицы Shops, а поле «продукт» находится в таблице Goods, нужно получить порядковый номер требуемого товара, чтобы потом найти в таблице товаров. Получить выбранный товар можно при помощи свойства SelectedItem, а отобрать запись с этим товаром из таблицы Shops можно при помощи метода Select(). Затем из полученной записи выделяется значение поля id, на основе которого задается условие для фильтрации: Product = <значение поля id>. Сформированный фильтр применяется к компоненту goodsBindingSourse с помощью свойства Filter. Если флажок checkBox1 не выбран или в списке не выбран продукт, то фильтрация отменяется путем присвоения Filter значения пустой строки.