Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM Новый топик    Ответить
 Update БД из DataGridviewComboBoxColumn  [new]
SupNatRus
Member

Откуда:
Сообщений: 2
Требуется обновить грид по нажатию кнопки. Дело в том, что в гриде имеются comboboxcolumn, с обновлением которых возникает проблема.

Заполнение грида

 public void GridPrepod()
        {
            try
            {
                string selectPrepod = String.Format(@"SELECT Преподаватель.ID_преподавателя,  Преподаватель.Фамилия, y1.ID_степени, y2.ID_степени
 FROM Преподаватель join Учёная_степень y1
     on Преподаватель.Учёная_степень = y1.ID_степени 
     join Учёная_степень y2 on Преподаватель.Учёная_степень_2 = y2.ID_степени");
                
                da = new SqlDataAdapter(selectPrepod, cnn);
                dt = new DataTable();
 
                da.Fill(dt);
                dgvPrepod.DataSource = dt;
 
                dgvPrepod.Columns["ID_преподавателя"].Visible = false;
                dgvPrepod.Columns["ID_степени"].Visible = false;
 
                //Комбо Учёная степень
                string SelStep1 = String.Format(@"Select ID_степени, Наименование From Учёная_степень");
                daStep1 = new SqlDataAdapter(SelStep1, cnn);
                dtStep1 = new DataTable();
                daStep1.Fill(dtStep1);
                DataGridViewComboBoxColumn cBstep1 = new DataGridViewComboBoxColumn();
 
                cBstep1.DataSource = dtStep1;
                cBstep1.ValueMember = "ID_степени";
                cBstep1.DisplayMember = "Наименование";
                cBstep1.DataPropertyName = "ID_степени";
                cBstep1.HeaderText = "Учёная степень";
 
                dgvPrepod.Columns.Add(cBstep1);
 
                //Комбо Учёная степень 2
                string SelStep2 = String.Format(@"Select ID_степени, Наименование From Учёная_степень");
                daStep2 = new SqlDataAdapter(SelStep2, cnn);
                dtStep2 = new DataTable();
                daStep2.Fill(dtStep2);
                DataGridViewComboBoxColumn cBstep2 = new DataGridViewComboBoxColumn();
 
                cBstep2.DataSource = dtStep2;
                cBstep2.ValueMember = "ID_степени";
                cBstep2.DisplayMember = "Наименование";
                cBstep2.DataPropertyName = "ID_степени1";
                cBstep2.HeaderText = "Учёная степень 2";
 
                dgvPrepod.Columns.Add(cBstep2);
 
             catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }


Обновление грида:
private void btnChange_Click(object sender, EventArgs e)
        {
            try
            {
                SqlCommand command = new SqlCommand(@"Update Преподаватель 
                Set Фамилия = @family,  Учёная_степень=@step, Учёная_степень_2=@step2
where ID_преподавателя=@id", cnn);
 
                SqlParameter parametr = null;
 
                parametr = new SqlParameter("@family", SqlDbType.VarChar, 50);
                parametr.SourceColumn = "Фамилия";
                command.Parameters.Add(parametr);
 
                command.Parameters.Add("@step", SqlDbType.Int, 4);
                command.Parameters["@step"].Value = dgvPrepod.CurrentRow.Cells[4].Value;
 
                command.Parameters.Add("@step2", SqlDbType.Int, 4);
                command.Parameters["@step2"].Value = dgvPrepod.CurrentRow.Cells[5].Value;
 
                parametr = new SqlParameter("@id", SqlDbType.Int, 4);
                parametr.SourceColumn = "ID_преподавателя";
 
                command.Parameters.Add(parametr);                
 
                command.Connection = cnn;
                da.UpdateCommand = command;
                da.Update(dt);
 
             catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
 
            finally
            {
                cnn.Close();
            }
17 апр 13, 14:28    [14192901]     Ответить | Цитировать Сообщить модератору
 Re: Update БД из DataGridviewComboBoxColumn  [new]
SupNatRus
Member

Откуда:
Сообщений: 2
Сделал пока dgvPrepod.CurrentRow.Cells[11].Value;
Как выбрать строку, где произошло изменение и именно оттуда взять значение для update?
17 апр 13, 14:50    [14193085]     Ответить | Цитировать Сообщить модератору
 Re: Update БД из DataGridviewComboBoxColumn  [new]
pation
Member

Откуда: Москва
Сообщений: 4498
SupNatRus
Сделал пока dgvPrepod.CurrentRow.Cells[11].Value;
Как выбрать строку, где произошло изменение и именно оттуда взять значение для update?


зачем?

засунь свой апдейт комманд в адаптер, ещё напиши инсерт...
...и вызывай
da.Update(dt);
18 апр 13, 13:17    [14198217]     Ответить | Цитировать Сообщить модератору
Все форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM Ответить