Как обновить С# dataGridView после обновления? - программирование
Подтвердить что ты не робот

Как обновить С# dataGridView после обновления?

У меня есть dataGridView, когда я нажимаю на любую строку, открытую форму для обновления данных строки, но после окончания обновления форма обновления закрывается, но данные dataGridView не обновляются

Как я могу это сделать?

4b9b3361

Ответ 1

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);

Ответ 2

Верните свой DatagridView в исходный код.

DataGridView dg1 = new DataGridView();
dg1.DataSource = src1;

// Update Data in src1

dg1.DataSource = null;
dg1.DataSource = src1;

Ответ 3

Я не знаю, действительно ли это было решено или нет... но, глядя на все другие ответы, ничего не кажется совершенно ясным. Лучший способ, которым я нашел это, - поместить тот же код, который использовался для заполнения вашего datagridview в методе и передать его вашей форме datagridview, как это:

public void ConnectAndPopulateDataGridView(DataGridView dataGridView)
{ }

Код внутри метода точно такой же, как и код, используемый для заполнения datagirdview изначально, за исключением того, что имя datagridview изменяется на все, что вы вызывали в своем методе.

Теперь этот метод вызывается в вашей родительской форме.

Детский вид запускается через .ShowDialog(), после чего метод вызывается после того, как он вызывается сразу после того, как дочерний элемент закрыт... так:

ChildForm.ShowDialog();

ConnectAndPopulateDataGridView(dataGridView1);

Ответ 4

Вам просто нужно переопределить DataSource. Так что если у вас есть DataGridView DataSource, который содержит a, b, я c:

DataGridView.DataSource = a, b, c

И вдруг вы обновляете DataSource, чтобы иметь только a и b, вам нужно будет переопределить ваш DataSource:

DataGridView.DataSource = a, b

Надеюсь, вы сочтете это полезным.

Спасибо.

Ответ 5

Вы можете использовать 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;
            }
        }