Фильтрация данных
Удаление записей таблицы 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 значения пустой строки.