Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > DataGridView и последняя запись!


Автор: Assamite 19.1.2008, 13:57
Здравствуйте!
Такая проблемка: есть грид DataGridView заполненный значениями с БД, добавление записей в сам грид происходит с другой формы, визуально все записи в грид добавляются, но при нажатие кнопки Сохранить в БД, все записи кроме последней добавляются, а вот последняя никак. Если грид пустой и добавить только одну запись и нажать Сохранить в БД то она не сохраниться. Получается, последняя запись никак не хочет сохраняться в БД, в чем может быть трабл? smile 

Автор: thomas 19.1.2008, 16:11
Assamite, 
Приветствую.
Твой DataGridView через свойство DataSource должен быть связан с таблицей ДатаСета, данные из которой он отображает.
И что бы внести измениения в базу данных нужно вызвать метод Update для DataAdapter для этой таблицы передав ему в качестве параметра соответствующую команду sql(работа без типизипрованного ДатаСет)  или же вызвать метод Update для TableAdapter этой таблицы и  в качестве параметра передать таблицу ДатаСет.(работа с типизированным ДатаСет) 

Автор: Assamite 19.1.2008, 16:59
Цитата(thomas @  19.1.2008,  16:11 Найти цитируемый пост)
Твой DataGridView через свойство DataSource должен быть связан с таблицей ДатаСета, данные из которой он отображает.
И что бы внести измениения в базу данных нужно вызвать метод Update для DataAdapter для этой таблицы передав ему в качестве параметра соответствующую команду sql(работа без типизипрованного ДатаСет)  или же вызвать метод Update для TableAdapter этой таблицы и  в качестве параметра передать таблицу ДатаСет.(работа с типизированным ДатаСет) 


thomas, спасибо за ответ!
эт я все делаю.
но при вызове Update для TableAdapter, заносятся все записи, кроме последней. не могу понять почему ?

Автор: thomas 19.1.2008, 18:48
Assamite, 
Цитата

при вызове Update для TableAdapter, заносятся все записи, кроме последней. не могу понять почему ? 

Не понятно, что имеется в виду. Добавил в DataGridView несколько записей(строк) и при сохранении в БД, у тебя сохранются(вносятся в таблицу) все эти строки, кроме последней.
Или же, ты к имеющимся в DataGridView строкам добавляешь еще одну и вот она родимая не сохраняется в таблицу БД, а все остальные и так есть в  таблице БД.
Это, как говорят в Одессе, две большие разницы.

Код в студию. 

Автор: Assamite 20.1.2008, 01:29
Цитата(thomas @  19.1.2008,  18:48 Найти цитируемый пост)
Не понятно, что имеется в виду. Добавил в DataGridView несколько записей(строк) и при сохранении в БД, у тебя сохранются(вносятся в таблицу) все эти строки, кроме последней.
Или же, ты к имеющимся в DataGridView строкам добавляешь еще одну и вот она родимая не сохраняется в таблицу БД, а все остальные и так есть в  таблице БД.
Это, как говорят в Одессе, две большие разницы.


не вижу разницы, между тем и тем, что в первом случае последняя запись не вносится в БД, что во втором последняя запись не вноситься в БД. единственная разница, то что во втором случае запись только одна, но в тоже время она и есть последняя.
объясню на примере:  есть грид в нем 5 записей которые были переданы ему с БД, когда я руками в грид добавляю еще 3 записи и жму Сохранить в БД, то в БД оказывается не 8 записей как должно быть, а 7, получается последняя не сохранилась, а если в грид руками добавляю 1 запись и жму Сохранить в БД, то получаю не 6 записей, а так как и было,  5.

Код

this.table_int_docTableAdapter.Fill(this.sdocdbDataSetDocin.Table_int_doc);


Код

table_in_docTableAdapter.Update(sdocdbDataSetDocin);

Автор: _Jesus 21.1.2008, 13:51
Возможно не так ходишь по циклу, выбирая строки из грида для внесения в базу. Она у тебя не выбирает последнюю запись в гриде.
Код

DataGridViewRowCollection rows = dgGrid.Rows;
rows[rows.count-1] // последняя строка в гриде

Автор: Assamite 22.1.2008, 01:17
Цитата(_Jesus @  21.1.2008,  13:51 Найти цитируемый пост)
Возможно не так ходишь по циклу, выбирая строки из грида для внесения в базу. Она у тебя не выбирает последнюю запись в гриде.


какой цикл? у меня грид связан с BindingSource который в свою очередь с DataSet
а после вызова TableAdapter.Update все сохраняется кроме последней записи!
не могу понять почему?

Автор: thomas 22.1.2008, 10:05
Assamite, 
Приветствую.
Первое, вот тут надо бы имя таблицы в ДатаСет дописать.
Код

table_in_docTableAdapter.Update(sdocdbDataSetDocin.Table_int_doc);

А то датасет указал, а таблицу в нем нет.

Второе, если можешь вышли проект и базу, я посмотрю у себя. Может где что и всплывет.
На выпуклый военно-морской взгляд, пока, на дистанции, ничего подозрительного не видно.


Автор: Assamite 23.1.2008, 12:26
thomas , 
Приветствую.

Цитата(thomas @  22.1.2008,  10:05 Найти цитируемый пост)
Второе, если можешь вышли проект и базу, я посмотрю у себя. Может где что и всплывет.

Отослал.
Спасибо за помощь!

Автор: thomas 23.1.2008, 22:09
Assamite, 
Приветствую.
Ты забыл две строчки кода написать.
Код

private void tsbtnUpdate_Click(object sender, EventArgs e)
        {
            if (bindingNavigator.BindingSource == bindingSourceDocIN)
            {
                try
                {
//
//Добавь вот эти два метода!
                    this.Validate();
                    this.bindingSourceDocIN.EndEdit();
// далее по плану.
//
                    this.table_in_docTableAdapter.Update(sdocdbDataSet.Table_in_doc);
                    MessageBox.Show("Дані в таблиці вхідних документів успішно змінені! БД успішно оновлена! =:-))");

                }
                catch (Exception err)
                {
                    MessageBox.Show("Помилка! Зміни до БД не відбулись =:_((" + err.Message);
                }
            }
        }

Успехов.  smile 

Автор: Assamite 23.1.2008, 22:45
thomas ,
Приветствую.

Большое спасибо! я очень благодарен за помощь! smile 

Автор: thomas 23.1.2008, 22:59
Assamite, 
Да завсегда пожалуйста.  smile 
Если твоя проблема решена, то пометь вопрос как решённый.
Справа вверху на уровне названия темы.
С наилучшими пожеланиями.  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)