У меня есть dataGridView, когда я нажимаю на любую строку, открытую форму для обновления данных строки, но после окончания обновления форма обновления закрывается, но данные dataGridView не обновляются
Как я могу это сделать?
У меня есть dataGridView, когда я нажимаю на любую строку, открытую форму для обновления данных строки, но после окончания обновления форма обновления закрывается, но данные dataGridView не обновляются
Как я могу это сделать?
 BindingSource - единственный способ, не обращаясь к ORM сторонней организации, это может показаться длинным намотчиком сначала, но преимущества одного метода обновления на BindingSource настолько полезны.
Если ваш источник говорит, например, список пользовательских строк
List<string> users = GetUsers();
BindingSource source = new BindingSource();
source.DataSource = users
dataGridView1.Datasource = source;
 то, когда ваше редактирование просто обновит ваш объект данных, будь то DataTable или список пользовательских строк, как здесь, и ResetBindings на BindingSource;
users = GetUsers(); //Update your data object
source.ResetBindings(false);
		Верните свой DatagridView в исходный код.
DataGridView dg1 = new DataGridView();
dg1.DataSource = src1;
// Update Data in src1
dg1.DataSource = null;
dg1.DataSource = src1;
		Я не знаю, действительно ли это было решено или нет... но, глядя на все другие ответы, ничего не кажется совершенно ясным. Лучший способ, которым я нашел это, - поместить тот же код, который использовался для заполнения вашего datagridview в методе и передать его вашей форме datagridview, как это:
public void ConnectAndPopulateDataGridView(DataGridView dataGridView)
{ }
Код внутри метода точно такой же, как и код, используемый для заполнения datagirdview изначально, за исключением того, что имя datagridview изменяется на все, что вы вызывали в своем методе.
Теперь этот метод вызывается в вашей родительской форме.
Детский вид запускается через .ShowDialog(), после чего метод вызывается после того, как он вызывается сразу после того, как дочерний элемент закрыт... так:
ChildForm.ShowDialog();
ConnectAndPopulateDataGridView(dataGridView1);
		Вам просто нужно переопределить DataSource. Так что если у вас есть DataGridView DataSource, который содержит a, b, я c:
DataGridView.DataSource = a, b, c
И вдруг вы обновляете DataSource, чтобы иметь только a и b, вам нужно будет переопределить ваш DataSource:
DataGridView.DataSource = a, b
Надеюсь, вы сочтете это полезным.
Спасибо.
Вы можете использовать SqlDataAdapter для обновления DataGridView
     using (SqlConnection conn = new SqlConnection(connectionString))
        {
            using (SqlDataAdapter ad = new SqlDataAdapter("SELECT * FROM Table", conn))
            {
               DataTable dt = new DataTable();
                 ad.Fill(dt);
               dataGridView1.DataSource = dt;
            }
        }