1

bindingsourceデータベースのデータを別のフォームから変更した後、自分のデータを更新する際に問題が発生します。プログラムを最初に実行すると、すべてのデータが表示されtextboxesbindingnavigatorデータベースと同じレコードが含まれます。そうは言っても、私はデータベースからデータを追加または削除しようとしていますbindingnavigator. bindingnavigator他のフォームを閉じてフォームに戻ると、dataset更新されず、アプリケーションの前回の実行からのデータのみが表示されます...

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

Fill()メソッドはTableAdapter、プログラムを実行したときにのみ機能します。他のメソッドで実装しようとしましたが、私のdataset. フォームを閉じて再度開いても、それがメソッドにdatasetロードされることを知っていますForm_Load()

ボタンにリロードメソッドを作成しようとしましたが、どうにかしてに設定し bindingnavigator binding 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

4

1 に答える 1

3

さて、誰もこの問題の解決策を見つけることができないので、私は自分で解決することにしました...

まず、プログラムで作成できるようにdata bindings、すべてのcontrolsからを削除する必要がありました。次に、すべてをwindow propertiesクリアするメソッドを実装し、最終的にメソッドの実装を行う必要がありました...data bindingstextboxesUpdateBindingNavigator()

開始する前に、名前空間でこれら 2 つの変数を定義するだけです。

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

}

最後に、どこからでもメソッドを呼び出すことができUpdateBindingNavigator()、新しいデータでデータを更新します!!!

于 2015-05-04T15:21:52.090 に答える