@Nastya0696

Windows forms, только учусь?

есть кнопка save и кнопка view, вторая показывает базу данных, а первая сохраняет в нее, но чтобы увидеть, что сохранилось, нужно нажать view. в чем собственно вопрос, как сделать так, чтобы автоматически показывалось в datagridview что сохранилось, а не приходилось каждый раз нажимать view

предоставляю код двух кнопок, но как я понимаю в одной надо дописать, а другую удалить вообще))

private void button1_Click(object sender, EventArgs e)
        {
            conpoezdb.Open();
            SqlDataAdapter SDA = new SqlDataAdapter("INSERT INTO train(number,place, count, data, time)VALUES ('" + textBox1.Text + "', '" + textBox2.Text + "','" + textBox3.Text + "','" + textBox4.Text + "','" + textBox5.Text + "')", conpoezdb);
            SDA.SelectCommand.ExecuteNonQuery();
            conpoezdb.Close();
            MessageBox.Show("saved");
        }

private void button4_Click(object sender, EventArgs e)
        {
            conpoezdb.Open();
            SqlDataAdapter SDA = new SqlDataAdapter("SELECT * FROM train", conpoezdb);
            DataTable data = new DataTable();
            SDA.Fill(data);
            dataGridView1.DataSource = data;
            conpoezdb.Close();
        }
  • Вопрос задан
  • 229 просмотров
Решения вопроса 1
EreminD
@EreminD
Кое-что умею
В данном случае, самое простое - это вот так:
private void button1_Click(object sender, EventArgs e)
        {
            conpoezdb.Open();
            SqlDataAdapter SDA = new SqlDataAdapter("INSERT INTO train(number,place, count, data, time)VALUES ('" + textBox1.Text + "', '" + textBox2.Text + "','" + textBox3.Text + "','" + textBox4.Text + "','" + textBox5.Text + "')", conpoezdb);
            SDA.SelectCommand.ExecuteNonQuery();
            conpoezdb.Close();
            MessageBox.Show("saved");
            updateView();
        }

private void button4_Click(object sender, EventArgs e)
        {
            updateView();
        }

private void updateView()
        {
            conpoezdb.Open();
            SqlDataAdapter SDA = new SqlDataAdapter("SELECT * FROM train", conpoezdb);
            DataTable data = new DataTable();
            SDA.Fill(data);
            dataGridView1.DataSource = data;
            conpoezdb.Close();
        }


В общем, логику обновления datagridview выносим в отдельный метод и дергаем его по нажатию на view и/или по нажатию на save

UPD: ну это при условии, что вам нужна кнопка view
UPD1: вот так вот, если без кнопуи view
private void button1_Click(object sender, EventArgs e)
        {
            conpoezdb.Open();

            //пишем в бд
            SqlDataAdapter SDA = new SqlDataAdapter("INSERT INTO train(number,place, count, data, time)VALUES ('" + textBox1.Text + "', '" + textBox2.Text + "','" + textBox3.Text + "','" + textBox4.Text + "','" + textBox5.Text + "')", conpoezdb);
            SDA.SelectCommand.ExecuteNonQuery();

             //запрашиваем по новой
            SqlDataAdapter SDA = new SqlDataAdapter("SELECT * FROM train", conpoezdb);
            conpoezdb.Close();

            DataTable data = new DataTable();
            SDA.Fill(data);
            dataGridView1.DataSource = data;

            MessageBox.Show("saved");
        }
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
1. SqlDataAdapter SDA = new SqlDataAdapter("INSERT INTO train(number,place, count, data, time)VALUES ('" + textBox1.Text + "', '" + textBox2.Text + "','" + textBox3.Text + "','" + textBox4.Text + "','" + textBox5.Text + "')", conpoezdb);
Небезопасно
Нужно использовать параметры . Например

https://msdn.microsoft.com/ru-ru/library/bbw6zyha(...
2. try catch нет, добавьте,чтобы избавиться от неприятностей в будущем.

3. Ответ выше на вопрос дан.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы