2015-05-02 5 views
1

У меня проблема с обновлением bindingsource после того, как я изменил данные в базе данных из другой формы. теперь, когда я впервые запускаю свою программу, все данные отображаются в textboxes, а bindingnavigator имеет те же записи, что и база данных. С учетом сказанного, я пытаюсь добавить или удалить данные из базы данных в форме, отличной от той, которая содержит bindingnavigator. когда я закрываю другие формы и вернуться к bindingnavigator форме, dataset не обновляется, он только показывает данные из предыдущего запуска приложения ...Как обновить источник привязки bindingnavigator в C#?

this.tblEmployeeTableAdapter.Fill(this.employeePayDatabaseDataSet.tblEmployee); 

Fill() метод TableAdapter работает только при запуске программы, я пытался реализовать ее в других методах, но она не обновляет мой dataset. Даже если я закрою форму и снова ее открою, зная, что dataset загрузок по методу Form_Load().

Я попытался сделать метод перезагрузки на кнопку как-то она устанавливает bindingnavigatorbinding source к null, но никакие данные не показаны !!!

private void bindingNavigatorReload_Click(object sender, EventArgs e) 
     { 
      EmployeePayDatabaseDataSetTableAdapters.tblEmployeeTableAdapter NewtblAdapter = new EmployeePayDatabaseDataSetTableAdapters.tblEmployeeTableAdapter(); 
      EmployeePayDatabaseDataSet NewDataSet = new EmployeePayDatabaseDataSet(); 
      NewtblAdapter.Fill(NewDataSet.tblEmployee); 

     } 

Подсказка:

Copy to output Directory свойства database устанавливается в Copy Always

Copy to output Directory свойства dataset устанавливается в Do Not Copy

Я использую SqlServer 2008 для базы данных и visual studio 2010 для проекта. база данных является service-based база данных и модель, используемая для базы данных Entity Model

ответ

1

Ну, так как никто не может найти решение этого вопроса, я решил сделать это сам ...

Во-первых, я должен был удалите data bindings из всех controls из window properties, чтобы я мог их создать программно. то мне пришлось реализовать метод, который очищает все data bindings от моего textboxes и, наконец, выполняет метод UpdateBindingNavigator() ...

прежде чем вы начнете просто определять эти две переменные в пространстве имен;

SqlDataAdapter datapter; 
DataSet dset 

string connection = "your_connection_string";

private void ClearBeforeFill() 
{ 
txtbox1.DataBindings.Clear(); 
txtbox2.DataBindings.Clear(); 
txtbox3.DataBindings.Clear(); 
txtbox4.DataBindings.Clear(); 
} 

private void UpdateBindingNavigator() 
{ 
ClearBeforeFill(); 
datapter = new SqlDataAdapter("SELECT * FROM tblEmployee", connection); 
dset = new DataSet(); 
datapter.Fill(dset); 

BindingSource1.DataSource = dset.Tables[0]; 

txtbox1.DataBindings.Add(new Binding("Text", BindingSource1, "Emp_ID", true)); 
txtbox2.DataBindings.Add(new Binding("Text", BindingSource1, "Emp_Name", true)); 
txtbox3.DataBindings.Add(new Binding("Text", BindingSource1, "Emp_Age", true)); 
txtbox4.DataBindings.Add(new Binding("Text", BindingSource1, "Emp_Salary", true)); 

} 

Finaly вы можете вызвать метод UpdateBindingNavigator() из любой точки мира вы хотите и освежит ваши данные с новыми !!!

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