2012-05-01 2 views
4
private void UserList_Load(object sender, EventArgs e) 
{ 
    // TODO: This line of code loads data into the 'workOrdersDataSet.users' table. You can move, or remove it, as needed. 
    this.usersTableAdapter.Fill(this.workOrdersDataSet.users); 
} 

Как я могу перезагрузить данные, если изменения были сделаны в другой форме? (желательно автоматически без использования кнопки «Обновить»)?Обновить данные, используя TableAdapter

Я использую WinForms и Бэкэнд Access 2007.

Данные связаны с использованием конструктора к Datagrid

+0

Вы шутите? Ваш код обновляет данные, и вы спрашиваете, как это сделать? –

+0

Не освежает. Вот почему я спрашиваю –

+0

Вы ссылаетесь на тот же DataSet (экземпляр) в другой форме? –

ответ

4

Во-первых, я хотел бы переместить Fill в отдельную функцию:

public void LoadData() 
{ 
    this.usersTableAdapter.Fill(this.workOrdersDataSet.users); 
} 

Затем, когда вы делаете ваши нагрузки событие, вы будете вызывать функцию:

private void UserList_Load(object sender, EventArgs e) 
{ 
    LoadData(); 
} 

Если у вас есть другая форма, которая выполняет изменения в данных, вы можете вызвать эту функцию в другом событии, аналогичном этому. Я использую DialogResult в моем коде:

private void OpenOtherForm() 
{ 
    DialogResult openForm = new OtherForm().ShowDialog(); 
    if(openForm == DialogResult.OK) 
     LoadData(); 
} 

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

private void PerformUpdate() 
{ 
    try 
    { 
     // your update code goes here 
     DialogResult = DialogResult.OK; // this is the line that tells your other form to refresh 
    } 
    catch (Exception ex) 
    { 
     DialogResult = DialogResult.Abort; 
    } 
} 

с помощью DialogResult, то ваша основная форма сообщает о необходимости обновления данных только тогда, когда обновление действительно имеет место.

+0

Я сделал вашу рекомендацию, но DataGridView не обновлялся. Мой код кнопки говорит private void buttonNewUser_Click (отправитель объекта, EventArgs e) { // NewUserForm nuf = new NewUserForm(); //nuf.Show(); OpenOtherForm(); } –

+0

на другой форме вы используете DialogResult? – Taryn

+0

Im пытается очистить таблицу, чтобы обновить сетку данных. Я использую sqldata-адаптер и набор данных со связыванием. Я могу загружать данные, но когда я добавляю новые данные в datatable, мне нужно обновить, чтобы он показывал новые данные, которые я добавлял. Я попробовал набор данных. Очистить(); то после этого я помещаю DataAdapter.Fill (Dataset) dataGrid использует привязки datamember и datasource в visual studio, но этот метод не работает, почему он работает, он должен использовать Oledb, но im использовать SQL Oledb – shawn

1

Вы можете добавить эту строку в другую функцию, скажем,

public void MoveDataToUI() 
{ 
    this.usersTableAdapter.Fill(this.workOrdersDataSet.users); 
} 

и после вызова этой функции из четного обработчика, который возникает, когда кто-то меняет что-то в другой форме.

Events tutorial

Смежные вопросы