Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Datagridview и dataadapter / 3 сообщений из 3, страница 1 из 1
17.08.2014, 00:53
    #38721833
Pallaris
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Datagridview и dataadapter
То ли время позднее и я сильно туплю, то ли еще что, но проблема такая.
Предыстория:
Есть dataGridView, к нему прицеплен BindingSource, к нему - DataTable. Данные - сведения о дозах материала по рецепту (код материала, имя материала, количество). Столбец Имя материала - readonly.

По двойному клику на ячейке Имя материала вызываю диалог, где выбираю новый материал. По нажатию ОК у bindingSource.Current меняю значение кода материала на выбранный. Есть кнопка Update, которая запускает DataAdapter.Update и рефрешит данные.

Теперь проблема:
После выбора нового материала, если я не ухожу со строки и жму кнопку Update, то в базу не ложится новый материал. Если же после выбора материала я перехожу на другую строку, или меняю количество материала - материал сохраняется.

SetModified() не помогает.

Материал
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
private void dataGridView2_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
        {
            if (e.ColumnIndex != 1)
                return;
            DataRowView rw_ = bindingSourceMaterials.Current as DataRowView;
            if (rw_ == null)
                return;
            FormPickObject fo_ = new FormPickObject();
            fo_.Text = "Выбор материала";
            fo_.lstItems.DataSource = dataMaterials2_;
            fo_.lstItems.DisplayMember = "pmmname";
            fo_.lstItems.ValueMember = "pmmcode";
            if (fo_.ShowDialog() == DialogResult.OK)
            {
                try
                {
                    rw_.Row.SetModified();
                }
                catch { }
                try
                {
                    rw_["rdmaterialcode"] = (int)fo_.lstItems.SelectedValue;
                    rw_["pmmname"] = (fo_.lstItems.SelectedItem as DataRowView)["pmmname"].ToString();
                }
                catch
                {
                    MessageBox.Show("Ошибка при выборе материала");
                }

                gridDoses.Refresh();
            }
            
        }


...
Рейтинг: 0 / 0
17.08.2014, 13:13
    #38721891
igr_ok
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Datagridview и dataadapter
Pallaris,

Datagridview.EndEdit в помощь.
...
Рейтинг: 0 / 0
17.08.2014, 18:45
    #38721991
Pallaris
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Datagridview и dataadapter
igr_okDatagridview.EndEdit в помощь.

Не, что-то не помогло

Помогло вот что: написать вместо
Код: c#
1.
2.
3.
DataRowView rw_ = bindingSourceMaterials.Current as DataRowView;
rw_["rdmaterialcode"] = (int)fo_.lstItems.SelectedValue;
rw_["pmmname"] = (fo_.lstItems.SelectedItem as DataRowView)["pmmname"].ToString();



вот это
Код: c#
1.
2.
3.
DataRowView rw_ = bindingSourceMaterials.Current as DataRowView;
rw_.Row["rdmaterialcode"] = (int)fo_.lstItems.SelectedValue;
rw_.Row["pmmname"] = (fo_.lstItems.SelectedItem as DataRowView)["pmmname"].ToString();



не знал, что оно вот так вот
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Datagridview и dataadapter / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]