Member 13875883 Ответов: 1

C# у меня есть datagridview(еще не сохраненный в базе данных).как я могу обновить информацию из этого datagridview


Привет.У меня есть datagridview,в который я добавляю информацию,я хочу обновить эту информацию, открыв новую форму, которая содержит текстовое поле,метку и нажмите кнопку Отправить.Затем информация в datagridview, которая выбрана, должна измениться.Как я могу это сделать?Моя проблема заключается в том, что информация не хранится в базе данных.Я не могу изменить данные из datagridview.Есть предложения?Спасибо.

Что я уже пробовал:

нет ничего, чтобы показать

private void update_Click(object sender, EventArgs e)
       {

           ProductClass up = new ProductClass
           {

               PriceBuy=Convert.ToDecimal(dg1.SelectedRows[0].Cells["colPriceBuy"].Value)
           };
           //this form open to edit
           Form9 edit = new Form9(up);
           edit.ShowDialog();
           update_CellVAlueChanged(null, null);



       }

       private void update_CellVAlueChanged(object sender, DataGridViewCellEventArgs e)
       {
         //maybe proqmaticaly I can change value of cells when I submit button of Form9
       }
   }

1 Ответов

Рейтинг:
1

OriginalGriff

Первое, что нужно сделать, это добавить свойство или конструктор в класс Form9 для доступа к текущим данным: Передача информации между двумя формами, Часть 1: Родитель-Ребенок[^]
А затем используйте свойство, чтобы вернуть новые данные обратно в исходную форму: Передача информации между двумя формами, Часть 2: Ребенок-Родитель[^] (Если вы использовали свойство в Form9, чтобы получить существующие данные в форму, вы можете использовать то же самое свойство, чтобы получить его обратно).

Затем вам нужно выяснить, какая строка в DGV содержит необходимую вам информацию:

foreach (DataGridViewRow row in myDataGridView.SelectedRows)
    {
    Form9 edit = new Form9();
    edit.Value = row.Cells[0].Value.ToString();
    if (edit.ShowDialog() == DialogResult.OK)
        {
        row.Cells[0].Value = edit.Value;
        }
    }


Кстати: сделайте себе одолжение и перестаньте использовать имена Visual Studio по умолчанию для всего - вы можете помнить, что "TextBox8" - это номер мобильного телефона сегодня, но когда вам придется изменить его через три недели, вы это сделаете? Используйте описательные имена - например, "tbMobileNo", - и ваш код станет легче читать, более самодокументируемым, легче поддерживать - и на удивление быстрее кодировать, потому что Intellisense может добраться до "tbMobile" за три нажатия клавиш, где "TextBox8" занимает размышление и 8 нажатий клавиш...
Назовите ваши формы чем-то разумным, а не "Формой1", "Формой2"...