Обработка клика на ячейке DataGridView = изменение поля БД - CodeHelper

Обработка клика на ячейке DataGridView = изменение поля БД

0

Есть бд из двух таблиц (Entity, всё через мастера, только Command'ы прописывал руками, т.к. таблицы две связанные), клиенты и заказы, в заказе есть выбранный пользователем клиент, у клиента много заказов. Создал DataSet, привязал его к DataGridView "Заказы" в конструкторе.

Два вопроса. 1) Сделал кнопку Изменить заказ, открывается диалоговое окно изменения пары полей в заказе. Как потом правильно сохранить это в бд? Делаю вот так, но знаю что не правильно (надо в бд изменять сначала, а потом апдейтить таблицу, а не наоборот):

private void SaveChanges_Click(object sender, EventArgs e)
            {
                Form1.myMainForm.dataGridView2.CurrentRow.Cells[1].Value = textBoxService.Text;
                Form1.myMainForm.orderSetBindingSource1.EndEdit();
                this.Validate();
                Form1.myMainForm.orderSetBindingSource1.EndEdit();
                Form1.myMainForm.orderSetTableAdapter1.Update(Form1.myMainForm.dataSetX);
                Close();
            }

2) Есть в заказе поле Статус, которое CheckBoxом является в бд. Обрабатываю клик на ячейку, и пытаюсь сохранить в бд (всё тем же неверным способом)

  private void DataGridViewCellContentClick(object sender, DataGridViewCellEventArgs e)
           {
               if (e.ColumnIndex == 3)
               {
                   if(Convert.ToBoolean(dataGridView2.CurrentCell.Value)==false)
                   {dataGridView2.CurrentCell.Value = true;}
                   else { dataGridView2.CurrentCell.Value = false; }
                   Form1.myMainForm.orderSetBindingSource1.EndEdit();
                   this.Validate();
                   Form1.myMainForm.orderSetBindingSource1.EndEdit();
                   Form1.myMainForm.orderSetTableAdapter1.Update(Form1.myMainForm.dataSetX);
                   DB.SaveChanges();
               }
           }

В этом случае такой неверный способ НЕ работает (в пункте 1 работает). Подскажите как сделать правильно.

Новые ответы


0
if (e.ColumnIndex == 3)
{
   if(Convert.ToBoolean(dataGridView2.CurrentCell.Value)==false)
   {dataGridView2.CurrentCell.Value = true;}
   else { dataGridView2.CurrentCell.Value = false; }
   orderSetBindingSource1.EndEdit();
   orderSetTableAdapter1.Update(dataSetX);
}

v1.7.123.556
© 2009—2010 CodeHelper FAQ | О сайте | Обратная связь | История изменений | Статьи
Creative Commons LicenseМатериалы сайта распространяются под лицензией Creative Commons Attribution-Share Alike 3.0 Unported.